[gnome-control-center] Revert "sound: Fix the main volume bars to correctly display changes in volume"
- From: Bastien Nocera <hadess src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-control-center] Revert "sound: Fix the main volume bars to correctly display changes in volume"
- Date: Tue, 17 Mar 2015 11:22:31 +0000 (UTC)
commit 2476dde3b5ecffdfeba6b0e48694589081e2af82
Author: Bastien Nocera <hadess hadess net>
Date: Tue Mar 17 12:06:21 2015 +0100
Revert "sound: Fix the main volume bars to correctly display changes in volume"
This results in crashes when switching inputs or outputs, as other parts
of the code expect only application bars being added to that hashtable.
The bar was destroyed when switching outputs (as the stream is removed before
a new one being added) but with the bar pointing to freed memory.
This reverts commit 22fa7f1292922621ab6099019f810c2b0a621c99.
https://bugzilla.gnome.org/show_bug.cgi?id=746227
panels/sound/gvc-mixer-dialog.c | 14 +++++++++++---
1 files changed, 11 insertions(+), 3 deletions(-)
---
diff --git a/panels/sound/gvc-mixer-dialog.c b/panels/sound/gvc-mixer-dialog.c
index 63d2b0f..f473255 100644
--- a/panels/sound/gvc-mixer-dialog.c
+++ b/panels/sound/gvc-mixer-dialog.c
@@ -755,6 +755,16 @@ on_stream_is_muted_notify (GObject *object,
}
+static void
+save_bar_for_stream (GvcMixerDialog *dialog,
+ GvcMixerStream *stream,
+ GtkWidget *bar)
+{
+ g_hash_table_insert (dialog->priv->bars,
+ GUINT_TO_POINTER (gvc_mixer_stream_get_id (stream)),
+ bar);
+}
+
static GtkWidget *
create_bar (GvcMixerDialog *dialog,
gboolean add_to_size_group,
@@ -978,9 +988,6 @@ bar_set_stream (GvcMixerDialog *dialog,
"value-changed",
G_CALLBACK (on_adjustment_value_changed),
dialog);
- g_hash_table_insert (dialog->priv->bars,
- GUINT_TO_POINTER (gvc_mixer_stream_get_id (stream)),
- bar);
}
}
@@ -1028,6 +1035,7 @@ add_stream (GvcMixerDialog *dialog,
g_signal_handlers_disconnect_by_func (old_stream, on_stream_volume_notify, dialog);
g_hash_table_remove (dialog->priv->bars, GUINT_TO_POINTER (gvc_mixer_stream_get_id
(old_stream)));
}
+ save_bar_for_stream (dialog, stream, bar);
bar_set_stream (dialog, bar, stream);
gtk_widget_show (bar);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]