diff options
author | Victor Toso <victortoso@redhat.com> | 2015-09-07 10:17:34 +0200 |
---|---|---|
committer | Victor Toso <victortoso@redhat.com> | 2015-09-08 11:42:23 +0200 |
commit | a99ed1524b075c0cd9e7d82e7877783a1e31d291 (patch) | |
tree | a74f19225b8621e1a8ba80a1999129448752f960 | |
parent | 683db0ac922fc13ece04d6a6cd218416c8a7fdf2 (diff) |
audio: Do not volume-sync without audio
In case audio backend is not initialized correctly or there isn't audio
in the VM, we should not try to volume-sync.
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=1257210
-rw-r--r-- | src/channel-main.c | 6 | ||||
-rw-r--r-- | src/spice-audio.c | 4 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/channel-main.c b/src/channel-main.c index f5115aa..145b081 100644 --- a/src/channel-main.c +++ b/src/channel-main.c @@ -1159,7 +1159,8 @@ static void agent_sync_audio_playback(SpiceMainChannel *main_channel) SpiceAudio *audio = spice_audio_get(session, NULL); SpiceMainChannelPrivate *c = main_channel->priv; - if (!test_agent_cap(main_channel, VD_AGENT_CAP_AUDIO_VOLUME_SYNC) || + if (audio == NULL || + !test_agent_cap(main_channel, VD_AGENT_CAP_AUDIO_VOLUME_SYNC) || c->agent_volume_playback_sync == TRUE) { SPICE_DEBUG("%s - is not going to sync audio with guest", __func__); return; @@ -1215,7 +1216,8 @@ static void agent_sync_audio_record(SpiceMainChannel *main_channel) SpiceAudio *audio = spice_audio_get(session, NULL); SpiceMainChannelPrivate *c = main_channel->priv; - if (!test_agent_cap(main_channel, VD_AGENT_CAP_AUDIO_VOLUME_SYNC) || + if (audio == NULL || + !test_agent_cap(main_channel, VD_AGENT_CAP_AUDIO_VOLUME_SYNC) || c->agent_volume_record_sync == TRUE) { SPICE_DEBUG("%s - is not going to sync audio with guest", __func__); return; diff --git a/src/spice-audio.c b/src/spice-audio.c index ce191e1..3114a0a 100644 --- a/src/spice-audio.c +++ b/src/spice-audio.c @@ -197,6 +197,7 @@ void spice_audio_get_playback_volume_info_async(SpiceAudio *audio, GAsyncReadyCallback callback, gpointer user_data) { + g_return_if_fail(audio != NULL); SPICE_AUDIO_GET_CLASS(audio)->get_playback_volume_info_async(audio, cancellable, main_channel, callback, user_data); } @@ -208,6 +209,7 @@ gboolean spice_audio_get_playback_volume_info_finish(SpiceAudio *audio, guint16 **volume, GError **error) { + g_return_val_if_fail(audio != NULL, FALSE); return SPICE_AUDIO_GET_CLASS(audio)->get_playback_volume_info_finish(audio, res, mute, nchannels, volume, error); } @@ -218,6 +220,7 @@ void spice_audio_get_record_volume_info_async(SpiceAudio *audio, GAsyncReadyCallback callback, gpointer user_data) { + g_return_if_fail(audio != NULL); SPICE_AUDIO_GET_CLASS(audio)->get_record_volume_info_async(audio, cancellable, main_channel, callback, user_data); } @@ -229,6 +232,7 @@ gboolean spice_audio_get_record_volume_info_finish(SpiceAudio *audio, guint16 **volume, GError **error) { + g_return_val_if_fail(audio != NULL, FALSE); return SPICE_AUDIO_GET_CLASS(audio)->get_record_volume_info_finish(audio, res, mute, nchannels, volume, error); } |