aboutsummaryrefslogtreecommitdiff
path: root/src/indicator-sound.c
diff options
context:
space:
mode:
authorKen VanDine <ken.vandine@canonical.com>2011-04-04 06:02:19 -0400
committerBazaar Package Importer <james.westby@ubuntu.com>2011-04-04 06:02:19 -0400
commit0421dfae64f2f408ac0f764c4eb6117a33fecc3b (patch)
tree089b0c61ec13d8bb4357a1801796a9eb1fac8608 /src/indicator-sound.c
parentc5689e204992c8d821bfdeb14560f279784b6ca3 (diff)
parent1f8270d3e11c19c6b3068ebfc151a258dcf83ef1 (diff)
downloadayatana-indicator-sound-0421dfae64f2f408ac0f764c4eb6117a33fecc3b.tar.gz
ayatana-indicator-sound-0421dfae64f2f408ac0f764c4eb6117a33fecc3b.tar.bz2
ayatana-indicator-sound-0421dfae64f2f408ac0f764c4eb6117a33fecc3b.zip
* New upstream release.
- Fix crash with SIGABRT (LP: #738051) (LP: #744304) - ensure that if the service crashes the indicator will not show multiple sliders
Diffstat (limited to 'src/indicator-sound.c')
-rw-r--r--src/indicator-sound.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/indicator-sound.c b/src/indicator-sound.c
index 042bf89..5002463 100644
--- a/src/indicator-sound.c
+++ b/src/indicator-sound.c
@@ -137,6 +137,7 @@ indicator_sound_init (IndicatorSound *self)
IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(self);
priv->volume_widget = NULL;
+ priv->voip_widget = NULL;
priv->dbus_proxy = NULL;
GList* t_list = NULL;
priv->transport_widgets_list = t_list;
@@ -407,8 +408,14 @@ new_volume_slider_widget(DbusmenuMenuitem * newitem,
g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE);
io = g_object_get_data (G_OBJECT (client), "indicator");
- volume_widget = volume_widget_new (newitem, io);
IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(INDICATOR_SOUND (io));
+
+ if (priv->volume_widget != NULL){
+ volume_widget_tidy_up (priv->volume_widget);
+ gtk_widget_destroy (priv->volume_widget);
+ priv->volume_widget = NULL;
+ }
+ volume_widget = volume_widget_new (newitem, io);
priv->volume_widget = volume_widget;
GtkWidget* ido_slider_widget = volume_widget_get_ido_slider(VOLUME_WIDGET(priv->volume_widget));
@@ -452,6 +459,12 @@ new_voip_slider_widget (DbusmenuMenuitem * newitem,
io = g_object_get_data (G_OBJECT (client), "indicator");
IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(INDICATOR_SOUND (io));
+ if (priv->voip_widget != NULL){
+ voip_input_widget_tidy_up (priv->voip_widget);
+ gtk_widget_destroy (priv->voip_widget);
+ priv->voip_widget = NULL;
+ }
+
voip_widget = voip_input_widget_new (newitem);
priv->voip_widget = voip_widget;