From 978dd63540b380768a03be400e703f6e67f47e8f Mon Sep 17 00:00:00 2001 From: malc Date: Wed, 18 Feb 2009 20:44:04 +0000 Subject: Avoid running audio ctl's when vm is not running git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6627 c046a42c-6fe2-441c-8c8c-71466251a162 --- audio/audio.c | 11 +++++++++-- audio/audio_int.h | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) (limited to 'audio') diff --git a/audio/audio.c b/audio/audio.c index b0a5f3b4b5..a2636cb7ff 100644 --- a/audio/audio.c +++ b/audio/audio.c @@ -1127,6 +1127,7 @@ void AUD_set_active_out (SWVoiceOut *sw, int on) hw = sw->hw; if (sw->active != on) { + AudioState *s = &glob_audio_state; SWVoiceOut *temp_sw; SWVoiceCap *sc; @@ -1134,7 +1135,9 @@ void AUD_set_active_out (SWVoiceOut *sw, int on) hw->pending_disable = 0; if (!hw->enabled) { hw->enabled = 1; - hw->pcm_ops->ctl_out (hw, VOICE_ENABLE); + if (s->vm_running) { + hw->pcm_ops->ctl_out (hw, VOICE_ENABLE); + } } } else { @@ -1170,12 +1173,15 @@ void AUD_set_active_in (SWVoiceIn *sw, int on) hw = sw->hw; if (sw->active != on) { + AudioState *s = &glob_audio_state; SWVoiceIn *temp_sw; if (on) { if (!hw->enabled) { hw->enabled = 1; - hw->pcm_ops->ctl_in (hw, VOICE_ENABLE); + if (s->vm_running) { + hw->pcm_ops->ctl_in (hw, VOICE_ENABLE); + } } sw->total_hw_samples_acquired = hw->total_samples_captured; } @@ -1623,6 +1629,7 @@ static void audio_vm_change_state_handler (void *opaque, int running, HWVoiceIn *hwi = NULL; int op = running ? VOICE_ENABLE : VOICE_DISABLE; + s->vm_running = running; while ((hwo = audio_pcm_hw_find_any_enabled_out (s, hwo))) { hwo->pcm_ops->ctl_out (hwo, op); } diff --git a/audio/audio_int.h b/audio/audio_int.h index c1da710d06..fc87458f82 100644 --- a/audio/audio_int.h +++ b/audio/audio_int.h @@ -192,6 +192,7 @@ struct AudioState { LIST_HEAD (cap_listhead, CaptureVoiceOut) cap_head; int nb_hw_voices_out; int nb_hw_voices_in; + int vm_running; }; extern struct audio_driver no_audio_driver; -- cgit v1.2.1