diff options
Diffstat (limited to 'src/empathy-call-window.c')
-rw-r--r-- | src/empathy-call-window.c | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/src/empathy-call-window.c b/src/empathy-call-window.c index 4a9287dc8..ce0483099 100644 --- a/src/empathy-call-window.c +++ b/src/empathy-call-window.c @@ -1098,6 +1098,11 @@ empathy_call_window_init (EmpathyCallWindow *self) empathy_call_window_show_hangup_button (self, TRUE); priv->settings = g_settings_new (EMPATHY_PREFS_CALL_SCHEMA); + + /* Retrieve initial volume */ + priv->volume = g_settings_get_double (priv->settings, + EMPATHY_PREFS_CALL_SOUND_VOLUME) / 100.0; + g_signal_connect (priv->settings, "changed::"EMPATHY_PREFS_CALL_SOUND_VOLUME, G_CALLBACK (empathy_call_window_prefs_volume_changed_cb), self); @@ -2969,13 +2974,18 @@ empathy_call_window_set_send_video (EmpathyCallWindow *window, static void empathy_call_window_mic_toggled_cb (GtkToggleToolButton *toggle, - EmpathyCallWindow *window) + EmpathyCallWindow *self) { - EmpathyCallWindowPriv *priv = GET_PRIV (window); + EmpathyCallWindowPriv *priv = GET_PRIV (self); gboolean active; active = (gtk_toggle_tool_button_get_active (toggle)); + /* We don't want the settings callback to react to this change to avoid + * a loop. */ + g_signal_handlers_block_by_func (priv->settings, + empathy_call_window_prefs_volume_changed_cb, self); + if (active) { g_settings_set_double (priv->settings, EMPATHY_PREFS_CALL_SOUND_VOLUME, @@ -2991,6 +3001,9 @@ empathy_call_window_mic_toggled_cb (GtkToggleToolButton *toggle, g_settings_set_double (priv->settings, EMPATHY_PREFS_CALL_SOUND_VOLUME, 0); } + + g_signal_handlers_unblock_by_func (priv->settings, + empathy_call_window_prefs_volume_changed_cb, self); } static void |