aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/empathy-call-window.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/empathy-call-window.c b/src/empathy-call-window.c
index 3398a7b45..e2e103c61 100644
--- a/src/empathy-call-window.c
+++ b/src/empathy-call-window.c
@@ -2848,13 +2848,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,
@@ -2870,6 +2875,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