Revision 6165a426 audio/winwaveaudio.c

b/audio/winwaveaudio.c
29 29
    int avail;
30 30
    int pending;
31 31
    int curhdr;
32
    int paused;
32 33
    CRITICAL_SECTION crit_sect;
33 34
} WaveVoiceOut;
34 35

  
......
282 283

  
283 284
static int winwave_ctl_out (HWVoiceOut *hw, int cmd, ...)
284 285
{
286
    MMRESULT mr;
285 287
    WaveVoiceOut *wave = (WaveVoiceOut *) hw;
286 288

  
287 289
    switch (cmd) {
......
313 315
            else {
314 316
                hw->poll_mode = 0;
315 317
            }
318
            if (wave->paused) {
319
                mr = waveOutRestart (wave->hwo);
320
                if (mr != MMSYSERR_NOERROR) {
321
                    winwave_logerr (mr, "waveOutRestart");
322
                }
323
                wave->paused = 0;
324
            }
316 325
        }
317 326
        return 0;
318 327

  
319 328
    case VOICE_DISABLE:
329
        if (!wave->paused) {
330
            mr = waveOutPause (wave->hwo);
331
            if (mr != MMSYSERR_NOERROR) {
332
                winwave_logerr (mr, "waveOutPause");
333
            }
334
            else {
335
                wave->paused = 1;
336
            }
337
        }
320 338
        if (wave->event) {
321 339
            qemu_del_wait_object (wave->event, winwave_poll_out, wave);
322 340
        }

Also available in: Unified diff