@@ -1739,15 +1739,24 @@ static void audio_vm_change_state_handler (void *opaque, int running,
AudioState *s = opaque;
HWVoiceOut *hwo = NULL;
HWVoiceIn *hwi = NULL;
- int op = running ? VOICE_ENABLE : VOICE_DISABLE;
s->vm_running = running;
while ((hwo = audio_pcm_hw_find_any_enabled_out (hwo))) {
- hwo->pcm_ops->ctl_out (hwo, op, conf.try_poll_out);
+ if (running) {
+ hwo->pcm_ops->ctl_out (hwo, VOICE_ENABLE, conf.try_poll_out);
+ }
+ else {
+ hwo->pcm_ops->ctl_out (hwo, VOICE_DISABLE);
+ }
}
while ((hwi = audio_pcm_hw_find_any_enabled_in (hwi))) {
- hwi->pcm_ops->ctl_in (hwi, op, conf.try_poll_in);
+ if (running) {
+ hwi->pcm_ops->ctl_in (hwi, VOICE_ENABLE, conf.try_poll_in);
+ }
+ else {
+ hwi->pcm_ops->ctl_in (hwi, VOICE_DISABLE);
+ }
}
audio_reset_timer ();
}