diff options
Diffstat (limited to 'src/slider-menu-item.c')
-rw-r--r-- | src/slider-menu-item.c | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/slider-menu-item.c b/src/slider-menu-item.c index fb66563..974749f 100644 --- a/src/slider-menu-item.c +++ b/src/slider-menu-item.c @@ -28,9 +28,10 @@ with this program. If not, see <http://www.gnu.org/licenses/>. typedef struct _SliderMenuItemPrivate SliderMenuItemPrivate; struct _SliderMenuItemPrivate { - Device* a_sink; + Device* a_sink; gint index; gchar* name; + gboolean mute; pa_cvolume volume; pa_channel_map channel_map; pa_volume_t base_volume; @@ -75,7 +76,7 @@ slider_menu_item_init (SliderMenuItem *self) SliderMenuItemPrivate* priv = SLIDER_MENU_ITEM_GET_PRIVATE (self); - priv->index = -1; + priv->index = NOT_ACTIVE; priv->name = NULL; return; @@ -127,6 +128,7 @@ slider_menu_item_populate (SliderMenuItem* self, const pa_sink_info* update) priv->volume = slider_menu_item_construct_mono_volume (&update->volume); priv->base_volume = update->base_volume; priv->channel_map = update->channel_map; + priv->mute = update->mute; pa_volume_t vol = pa_cvolume_max (&update->volume); gdouble volume_percent = ((gdouble) vol * 100) / PA_VOLUME_NORM; @@ -134,6 +136,11 @@ slider_menu_item_populate (SliderMenuItem* self, const pa_sink_info* update) dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self), DBUSMENU_VOLUME_MENUITEM_LEVEL, new_volume); + GVariant* new_mute_update = g_variant_new_int32 (update->mute); + dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self), + DBUSMENU_VOLUME_MENUITEM_MUTE, + new_mute_update); + slider_menu_item_enable (self, TRUE); } @@ -170,6 +177,14 @@ slider_menu_item_update (SliderMenuItem* self, const pa_sink_info* update) dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self), DBUSMENU_VOLUME_MENUITEM_LEVEL, new_volume); + if (priv->mute != update->mute){ + priv->mute = update->mute; + g_debug ("volume menu item - update - mute = %i", update->mute); + GVariant* new_mute_update = g_variant_new_int32 (update->mute); + dbusmenu_menuitem_property_set_variant (DBUSMENU_MENUITEM(self), + DBUSMENU_VOLUME_MENUITEM_MUTE, + new_mute_update); + } } /* @@ -185,7 +200,7 @@ slider_menu_item_enable (SliderMenuItem* self, gboolean active) DBUSMENU_MENUITEM_PROP_ENABLED, active); if(active == FALSE){ - priv->index = -1; + priv->index = NOT_ACTIVE; if(priv->name != NULL){ g_free(priv->name); priv->name = NULL; |