Merge lp:~cjcurran/indicator-sound/mute-behaviour-part2 into lp:~indicator-applet-developers/indicator-sound/trunk_3

Proposed by Conor Curran
Status: Merged
Merged at revision: 223
Proposed branch: lp:~cjcurran/indicator-sound/mute-behaviour-part2
Merge into: lp:~indicator-applet-developers/indicator-sound/trunk_3
Diff against target: 404 lines (+106/-61)
7 files modified
src/common-defs.h (+2/-1)
src/device.c (+35/-36)
src/device.h (+5/-5)
src/pulseaudio-mgr.c (+12/-12)
src/slider-menu-item.c (+18/-3)
src/voip-input-widget.c (+1/-1)
src/volume-widget.c (+33/-3)
To merge this branch: bzr merge lp:~cjcurran/indicator-sound/mute-behaviour-part2
Reviewer Review Type Date Requested Status
Ted Gould (community) Approve
Review via email: mp+53469@code.launchpad.net

Description of the change

Final part in this mute behaviour bug. Both the voip slider and volume slider now have identical behaviour.

To post a comment you must log in.
Revision history for this message
Ted Gould (ted) wrote :

The only thing that is odd to me is that the mute is being passed as an
int32 instead of a boolean. It seems that's how it's stored on both
sides, might as well match that on DBus.

Shouldn't break anything though.

  review approve

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'src/common-defs.h'
--- src/common-defs.h 2011-03-09 14:17:12 +0000
+++ src/common-defs.h 2011-03-15 15:53:22 +0000
@@ -45,12 +45,13 @@
45 TRANSPORT_STATE_PAUSED45 TRANSPORT_STATE_PAUSED
46}TransportState;46}TransportState;
4747
48#define NOT_ACTIVE -148#define NOT_ACTIVE -1
49#define DBUSMENU_PROPERTY_EMPTY -149#define DBUSMENU_PROPERTY_EMPTY -1
5050
51/* DBUS Custom Items */51/* DBUS Custom Items */
52#define DBUSMENU_VOLUME_MENUITEM_TYPE "x-canonical-ido-volume-type"52#define DBUSMENU_VOLUME_MENUITEM_TYPE "x-canonical-ido-volume-type"
53#define DBUSMENU_VOLUME_MENUITEM_LEVEL "x-canonical-ido-volume-level"53#define DBUSMENU_VOLUME_MENUITEM_LEVEL "x-canonical-ido-volume-level"
54#define DBUSMENU_VOLUME_MENUITEM_MUTE "x-canonical-ido-volume-mute"
5455
55#define DBUSMENU_VOIP_INPUT_MENUITEM_TYPE "x-canonical-ido-voip-input-type"56#define DBUSMENU_VOIP_INPUT_MENUITEM_TYPE "x-canonical-ido-voip-input-type"
56#define DBUSMENU_VOIP_INPUT_MENUITEM_LEVEL "x-canonical-ido-voip-input-level"57#define DBUSMENU_VOIP_INPUT_MENUITEM_LEVEL "x-canonical-ido-voip-input-level"
5758
=== modified file 'src/device.c'
--- src/device.c 2011-03-14 19:47:59 +0000
+++ src/device.c 2011-03-15 15:53:22 +0000
@@ -90,11 +90,10 @@
90}90}
9191
92void92void
93device_populate (Device* self,93device_sink_populate (Device* self,
94 const pa_sink_info* update)94 const pa_sink_info* update)
95{95{
96 DevicePrivate* priv = DEVICE_GET_PRIVATE(self);96 DevicePrivate* priv = DEVICE_GET_PRIVATE(self);
97 device_mute_update (self, update->mute);
98 mute_menu_item_enable (priv->mute_menuitem, TRUE);97 mute_menu_item_enable (priv->mute_menuitem, TRUE);
99 slider_menu_item_populate (priv->volume_slider_menuitem, update);98 slider_menu_item_populate (priv->volume_slider_menuitem, update);
100 SoundState state = device_get_state_from_volume (self);99 SoundState state = device_get_state_from_volume (self);
@@ -103,37 +102,11 @@
103 sound_service_dbus_update_sound_state (priv->service,102 sound_service_dbus_update_sound_state (priv->service,
104 priv->current_sound_state);103 priv->current_sound_state);
105 }104 }
106105 device_mute_update (self, update->mute);
107}106}
108107
109void108void
110device_activate_voip_item (Device* self, gint sink_input_index, gint client_index)109device_sink_update (Device* self,
111{
112 DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
113 if (voip_input_menu_item_is_interested (priv->voip_input_menu_item,
114 sink_input_index,
115 client_index)){
116 voip_input_menu_item_enable (priv->voip_input_menu_item, TRUE);
117 }
118}
119
120void
121device_deactivate_voip_source (Device* self, gboolean visible)
122{
123 DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
124 visible &= voip_input_menu_item_is_active (priv->voip_input_menu_item);
125 voip_input_menu_item_deactivate_source (priv->voip_input_menu_item, visible);
126}
127
128void
129device_deactivate_voip_client (Device* self)
130{
131 DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
132 voip_input_menu_item_deactivate_voip_client (priv->voip_input_menu_item);
133}
134
135void
136device_update (Device* self,
137 const pa_sink_info* update)110 const pa_sink_info* update)
138{111{
139 DevicePrivate* priv = DEVICE_GET_PRIVATE (self);112 DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
@@ -223,22 +196,48 @@
223}196}
224197
225gint198gint
226device_get_index (Device* self)199device_get_sink_index (Device* self)
227{200{
228 DevicePrivate* priv = DEVICE_GET_PRIVATE (self);201 DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
229 return slider_menu_item_get_sink_index (priv->volume_slider_menuitem);202 return slider_menu_item_get_sink_index (priv->volume_slider_menuitem);
230}203}
231204
232gboolean205gboolean
233device_is_populated (Device* self)206device_is_sink_populated (Device* self)
234{207{
235 DevicePrivate* priv = DEVICE_GET_PRIVATE (self);208 DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
236 return dbusmenu_menuitem_property_get_bool (DBUSMENU_MENUITEM (priv->volume_slider_menuitem),209 return dbusmenu_menuitem_property_get_bool (DBUSMENU_MENUITEM (priv->volume_slider_menuitem),
237 DBUSMENU_MENUITEM_PROP_ENABLED);210 DBUSMENU_MENUITEM_PROP_ENABLED);
238}211}
239212
213void
214device_activate_voip_item (Device* self, gint sink_input_index, gint client_index)
215{
216 DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
217 if (voip_input_menu_item_is_interested (priv->voip_input_menu_item,
218 sink_input_index,
219 client_index)){
220 voip_input_menu_item_enable (priv->voip_input_menu_item, TRUE);
221 }
222}
223
224void
225device_deactivate_voip_source (Device* self, gboolean visible)
226{
227 DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
228 visible &= voip_input_menu_item_is_active (priv->voip_input_menu_item);
229 voip_input_menu_item_deactivate_source (priv->voip_input_menu_item, visible);
230}
231
232void
233device_deactivate_voip_client (Device* self)
234{
235 DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
236 voip_input_menu_item_deactivate_voip_client (priv->voip_input_menu_item);
237}
238
240void 239void
241device_deactivate (Device* self)240device_sink_deactivated (Device* self)
242{241{
243 DevicePrivate* priv = DEVICE_GET_PRIVATE (self);242 DevicePrivate* priv = DEVICE_GET_PRIVATE (self);
244 priv->current_sound_state = UNAVAILABLE;243 priv->current_sound_state = UNAVAILABLE;
245244
=== modified file 'src/device.h'
--- src/device.h 2011-03-14 19:47:59 +0000
+++ src/device.h 2011-03-15 15:53:22 +0000
@@ -58,11 +58,11 @@
58 */58 */
5959
60// Sink related60// Sink related
61void device_populate (Device* sink, const pa_sink_info* update);61void device_sink_populate (Device* sink, const pa_sink_info* update);
62void device_update (Device* sink, const pa_sink_info* update);62void device_sink_update (Device* sink, const pa_sink_info* update);
63gboolean device_is_populated (Device* sink);63gboolean device_is_sink_populated (Device* sink);
64gint device_get_index (Device* self);64gint device_get_sink_index (Device* self);
65void device_deactivate (Device* self);65void device_sink_deactivated (Device* self);
66void device_update_mute (Device* self, gboolean mute_update);66void device_update_mute (Device* self, gboolean mute_update);
67void device_ensure_sink_is_unmuted (Device* self);67void device_ensure_sink_is_unmuted (Device* self);
6868
6969
=== modified file 'src/pulseaudio-mgr.c'
--- src/pulseaudio-mgr.c 2011-03-14 19:47:59 +0000
+++ src/pulseaudio-mgr.c 2011-03-15 15:53:22 +0000
@@ -226,11 +226,11 @@
226 case PA_SUBSCRIPTION_EVENT_SINK:226 case PA_SUBSCRIPTION_EVENT_SINK:
227 227
228 // We don't care about any other sink other than the active one.228 // We don't care about any other sink other than the active one.
229 if (index != device_get_index (sink))229 if (index != device_get_sink_index (sink))
230 return;230 return;
231 231
232 if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) {232 if ((t & PA_SUBSCRIPTION_EVENT_TYPE_MASK) == PA_SUBSCRIPTION_EVENT_REMOVE) {
233 device_deactivate (sink);233 device_sink_deactivated (sink);
234 234
235 }235 }
236 else{236 else{
@@ -308,7 +308,7 @@
308 break;308 break;
309 case PA_CONTEXT_FAILED:309 case PA_CONTEXT_FAILED:
310 g_warning("PA_CONTEXT_FAILED - Is PulseAudio Daemon running ?");310 g_warning("PA_CONTEXT_FAILED - Is PulseAudio Daemon running ?");
311 device_deactivate (DEVICE (userdata));311 device_sink_deactivated (DEVICE (userdata));
312 if (reconnect_idle_id == 0){312 if (reconnect_idle_id == 0){
313 reconnect_idle_id = g_timeout_add_seconds (RECONNECT_DELAY,313 reconnect_idle_id = g_timeout_add_seconds (RECONNECT_DELAY,
314 reconnect_to_pulse,314 reconnect_to_pulse,
@@ -362,7 +362,7 @@
362362
363 if (info == NULL) {363 if (info == NULL) {
364 g_warning("No PA server - get the hell out of here");364 g_warning("No PA server - get the hell out of here");
365 device_deactivate (DEVICE (userdata));365 device_sink_deactivated (DEVICE (userdata));
366 return;366 return;
367 }367 }
368 // Go for the default sink368 // Go for the default sink
@@ -373,7 +373,7 @@
373 pm_default_sink_info_callback,373 pm_default_sink_info_callback,
374 userdata) )) {374 userdata) )) {
375 g_warning("pa_context_get_sink_info_by_namet() failed");375 g_warning("pa_context_get_sink_info_by_namet() failed");
376 device_deactivate (DEVICE (userdata));376 device_sink_deactivated (DEVICE (userdata));
377 pa_operation_unref(operation);377 pa_operation_unref(operation);
378 return;378 return;
379 }379 }
@@ -382,7 +382,7 @@
382 pm_sink_info_callback,382 pm_sink_info_callback,
383 userdata))) {383 userdata))) {
384 g_warning("pa_context_get_sink_info_list() failed");384 g_warning("pa_context_get_sink_info_list() failed");
385 device_deactivate (DEVICE (userdata));385 device_sink_deactivated (DEVICE (userdata));
386 pa_operation_unref(operation);386 pa_operation_unref(operation);
387 return;387 return;
388 }388 }
@@ -426,9 +426,9 @@
426 return;426 return;
427 }427 }
428 Device* a_sink = DEVICE (userdata);428 Device* a_sink = DEVICE (userdata);
429 if (device_is_populated (a_sink) == FALSE &&429 if (device_is_sink_populated (a_sink) == FALSE &&
430 g_ascii_strncasecmp("auto_null", sink->name, 9) != 0){430 g_ascii_strncasecmp("auto_null", sink->name, 9) != 0){
431 device_populate (a_sink, sink);431 device_sink_populate (a_sink, sink);
432 }432 }
433 }433 }
434}434}
@@ -448,11 +448,11 @@
448 return;448 return;
449 }449 }
450 // Only repopulate if there is a change with regards the index450 // Only repopulate if there is a change with regards the index
451 if (device_get_index (DEVICE (userdata)) == info->index)451 if (device_get_sink_index (DEVICE (userdata)) == info->index)
452 return;452 return;
453 453
454 g_debug ("Pulse Server has handed us a new default sink");454 g_debug ("Pulse Server has handed us a new default sink");
455 device_populate (DEVICE (userdata), info);455 device_sink_populate (DEVICE (userdata), info);
456 }456 }
457}457}
458458
@@ -494,7 +494,7 @@
494 }494 }
495495
496 // And finally check for the mute blocking state496 // And finally check for the mute blocking state
497 if (device_get_index (a_sink) == info->sink){497 if (device_get_sink_index (a_sink) == info->sink){
498 device_determine_blocking_state (a_sink);498 device_determine_blocking_state (a_sink);
499 }499 }
500 }500 }
@@ -514,7 +514,7 @@
514 g_warning ("update_device - our user data is not what we think it should be or the info parameter is null");514 g_warning ("update_device - our user data is not what we think it should be or the info parameter is null");
515 return;515 return;
516 }516 }
517 device_update (DEVICE(userdata), info);517 device_sink_update (DEVICE(userdata), info);
518 }518 }
519}519}
520520
521521
=== modified file 'src/slider-menu-item.c'
--- src/slider-menu-item.c 2011-03-14 19:47:59 +0000
+++ src/slider-menu-item.c 2011-03-15 15:53:22 +0000
@@ -28,9 +28,10 @@
28typedef struct _SliderMenuItemPrivate SliderMenuItemPrivate;28typedef struct _SliderMenuItemPrivate SliderMenuItemPrivate;
2929
30struct _SliderMenuItemPrivate {30struct _SliderMenuItemPrivate {
31 Device* a_sink;31 Device* a_sink;
32 gint index;32 gint index;
33 gchar* name;33 gchar* name;
34 gboolean mute;
34 pa_cvolume volume;35 pa_cvolume volume;
35 pa_channel_map channel_map;36 pa_channel_map channel_map;
36 pa_volume_t base_volume;37 pa_volume_t base_volume;
@@ -75,7 +76,7 @@
7576
76 SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (self);77 SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (self);
7778
78 priv->index = -1;79 priv->index = NOT_ACTIVE;
79 priv->name = NULL;80 priv->name = NULL;
8081
81 return;82 return;
@@ -127,6 +128,7 @@
127 priv->volume = slider_menu_item_construct_mono_volume (&update->volume);128 priv->volume = slider_menu_item_construct_mono_volume (&update->volume);
128 priv->base_volume = update->base_volume;129 priv->base_volume = update->base_volume;
129 priv->channel_map = update->channel_map;130 priv->channel_map = update->channel_map;
131 priv->mute = update->mute;
130132
131 pa_volume_t vol = pa_cvolume_max (&update->volume);133 pa_volume_t vol = pa_cvolume_max (&update->volume);
132 gdouble volume_percent = ((gdouble) vol * 100) / PA_VOLUME_NORM;134 gdouble volume_percent = ((gdouble) vol * 100) / PA_VOLUME_NORM;
@@ -134,6 +136,11 @@
134 dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self),136 dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self),
135 DBUSMENU_VOLUME_MENUITEM_LEVEL,137 DBUSMENU_VOLUME_MENUITEM_LEVEL,
136 new_volume);138 new_volume);
139 GVariant* new_mute_update = g_variant_new_int32 (update->mute);
140 dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self),
141 DBUSMENU_VOLUME_MENUITEM_MUTE,
142 new_mute_update);
143
137 slider_menu_item_enable (self, TRUE);144 slider_menu_item_enable (self, TRUE);
138}145}
139146
@@ -170,6 +177,14 @@
170 dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self),177 dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self),
171 DBUSMENU_VOLUME_MENUITEM_LEVEL,178 DBUSMENU_VOLUME_MENUITEM_LEVEL,
172 new_volume);179 new_volume);
180 if (priv->mute != update->mute){
181 priv->mute = update->mute;
182 g_debug ("volume menu item - update - mute = %i", update->mute);
183 GVariant* new_mute_update = g_variant_new_int32 (update->mute);
184 dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self),
185 DBUSMENU_VOLUME_MENUITEM_MUTE,
186 new_mute_update);
187 }
173}188}
174189
175/*190/*
@@ -185,7 +200,7 @@
185 DBUSMENU_MENUITEM_PROP_ENABLED,200 DBUSMENU_MENUITEM_PROP_ENABLED,
186 active);201 active);
187 if(active == FALSE){202 if(active == FALSE){
188 priv->index = -1;203 priv->index = NOT_ACTIVE;
189 if(priv->name != NULL){204 if(priv->name != NULL){
190 g_free(priv->name);205 g_free(priv->name);
191 priv->name = NULL;206 priv->name = NULL;
192207
=== modified file 'src/voip-input-widget.c'
--- src/voip-input-widget.c 2011-03-09 16:38:11 +0000
+++ src/voip-input-widget.c 2011-03-15 15:53:22 +0000
@@ -95,7 +95,7 @@
95 g_signal_connect(priv->ido_voip_input_slider, "slider-released", G_CALLBACK(voip_input_widget_slider_released), self);95 g_signal_connect(priv->ido_voip_input_slider, "slider-released", G_CALLBACK(voip_input_widget_slider_released), self);
9696
97 GtkWidget* primary_image = ido_scale_menu_item_get_primary_image((IdoScaleMenuItem*)priv->ido_voip_input_slider);97 GtkWidget* primary_image = ido_scale_menu_item_get_primary_image((IdoScaleMenuItem*)priv->ido_voip_input_slider);
98 GIcon * primary_gicon = g_themed_icon_new_with_default_fallbacks("audio-input-microphone-none-panel");98 GIcon * primary_gicon = g_themed_icon_new_with_default_fallbacks("audio-input-microphone-zero-panel");
99 gtk_image_set_from_gicon(GTK_IMAGE(primary_image), primary_gicon, GTK_ICON_SIZE_MENU);99 gtk_image_set_from_gicon(GTK_IMAGE(primary_image), primary_gicon, GTK_ICON_SIZE_MENU);
100 g_object_unref(primary_gicon);100 g_object_unref(primary_gicon);
101101
102102
=== modified file 'src/volume-widget.c'
--- src/volume-widget.c 2011-03-10 19:48:26 +0000
+++ src/volume-widget.c 2011-03-15 15:53:22 +0000
@@ -128,11 +128,11 @@
128 GVariant* value, gpointer userdata)128 GVariant* value, gpointer userdata)
129{ 129{
130 g_return_if_fail (IS_VOLUME_WIDGET (userdata)); 130 g_return_if_fail (IS_VOLUME_WIDGET (userdata));
131 g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_DOUBLE) );
132 VolumeWidget* mitem = VOLUME_WIDGET(userdata);131 VolumeWidget* mitem = VOLUME_WIDGET(userdata);
133 VolumeWidgetPrivate * priv = VOLUME_WIDGET_GET_PRIVATE(mitem);132 VolumeWidgetPrivate * priv = VOLUME_WIDGET_GET_PRIVATE(mitem);
134 //g_debug("scrub-widget::property_update for prop %s", property); 133
135 if(g_ascii_strcasecmp(DBUSMENU_VOLUME_MENUITEM_LEVEL, property) == 0){134 if(g_ascii_strcasecmp(DBUSMENU_VOLUME_MENUITEM_LEVEL, property) == 0){
135 g_return_if_fail (g_variant_is_of_type (value, G_VARIANT_TYPE_DOUBLE) );
136 if(priv->grabbed == FALSE){136 if(priv->grabbed == FALSE){
137 GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider);137 GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider);
138 GtkRange *range = (GtkRange*)slider;138 GtkRange *range = (GtkRange*)slider;
@@ -141,6 +141,27 @@
141 update_accessible_desc(priv->indicator);141 update_accessible_desc(priv->indicator);
142 }142 }
143 }143 }
144 if(g_ascii_strcasecmp(DBUSMENU_VOLUME_MENUITEM_MUTE, property) == 0){
145 g_debug ("volume widget - mute update ");
146 if(priv->grabbed == FALSE){
147 GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider);
148 GtkRange *range = (GtkRange*)slider;
149 gint update = g_variant_get_int32 (value);
150 gdouble level;
151
152 g_debug ("volume widget - mute update %i", update);
153
154 if (update == 1){
155 level = 0;
156 }
157 else{
158 level = g_variant_get_double (dbusmenu_menuitem_property_get_variant (priv->twin_item,
159 DBUSMENU_VOLUME_MENUITEM_LEVEL));
160 }
161 gtk_range_set_value(range, level);
162 g_debug ("volume-widget - update mute with value %i", update);
163 }
164 }
144}165}
145166
146static void167static void
@@ -154,9 +175,15 @@
154 G_CALLBACK(volume_widget_property_update), self);175 G_CALLBACK(volume_widget_property_update), self);
155 gdouble initial_level = g_variant_get_double (dbusmenu_menuitem_property_get_variant(twin_item,176 gdouble initial_level = g_variant_get_double (dbusmenu_menuitem_property_get_variant(twin_item,
156 DBUSMENU_VOLUME_MENUITEM_LEVEL));177 DBUSMENU_VOLUME_MENUITEM_LEVEL));
178 gint initial_mute = g_variant_get_int32 (dbusmenu_menuitem_property_get_variant(twin_item,
179 DBUSMENU_VOLUME_MENUITEM_MUTE));
180
157 //g_debug("volume_widget_set_twin_item initial level = %f", initial_level);181 //g_debug("volume_widget_set_twin_item initial level = %f", initial_level);
158 GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider);182 GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider);
159 GtkRange *range = (GtkRange*)slider;183 GtkRange *range = (GtkRange*)slider;
184 if(initial_mute == 1){
185 initial_level = 0;
186 }
160 gtk_range_set_value(range, initial_level);187 gtk_range_set_value(range, initial_level);
161 update_accessible_desc(priv->indicator);188 update_accessible_desc(priv->indicator);
162}189}
@@ -188,7 +215,10 @@
188 GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider);215 GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider);
189 gdouble current_value = CLAMP(gtk_range_get_value(GTK_RANGE(slider)), 0, 100);216 gdouble current_value = CLAMP(gtk_range_get_value(GTK_RANGE(slider)), 0, 100);
190 //g_debug ("value changed %f", gtk_range_get_value(GTK_RANGE(slider)));217 //g_debug ("value changed %f", gtk_range_get_value(GTK_RANGE(slider)));
191 if(current_value == 0 || current_value == 100){218 gint mute = g_variant_get_int32 (dbusmenu_menuitem_property_get_variant (priv->twin_item,
219 DBUSMENU_VOLUME_MENUITEM_MUTE));
220
221 if((current_value == 0 && mute != 1) || current_value == 100){
192 volume_widget_update(mitem, current_value);222 volume_widget_update(mitem, current_value);
193 }223 }
194224

Subscribers

People subscribed via source and target branches