aboutsummaryrefslogtreecommitdiffstats
path: root/src/empathy-call-window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/empathy-call-window.c')
-rw-r--r--src/empathy-call-window.c17
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