diff options
-rw-r--r-- | src/indicator-sound.c | 23 | ||||
-rw-r--r-- | src/indicator-sound.h | 2 | ||||
-rw-r--r-- | src/volume-widget.c | 6 |
3 files changed, 20 insertions, 11 deletions
diff --git a/src/indicator-sound.c b/src/indicator-sound.c index 3867f27..d1bcc33 100644 --- a/src/indicator-sound.c +++ b/src/indicator-sound.c @@ -115,6 +115,7 @@ static void get_sink_availability_cb ( GObject *object, /****Volume States 'members' ***/ static void update_state(const gint state); +static const gint STATE_INVALID = -1; static const gint STATE_MUTED = 0; static const gint STATE_ZERO = 1; static const gint STATE_LOW = 2; @@ -452,7 +453,7 @@ static void fetch_state (IndicatorSound* self) IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(self); if(priv->volume_widget != NULL){ - determine_state_from_volume (volume_widget_get_current_volume(priv->volume_widget)); + update_state_from_volume (volume_widget_get_current_volume(priv->volume_widget)); } g_dbus_proxy_call ( priv->dbus_proxy, @@ -631,12 +632,11 @@ update_state(const gint state) indicator_image_helper_update(speaker_image, image_name); } - -void +static gint determine_state_from_volume(gdouble volume_percent) { if (device_available == FALSE) - return; + return STATE_INVALID; gint state = previous_state; if (volume_percent < 30.0 && volume_percent > 0) { state = STATE_LOW; @@ -647,9 +647,18 @@ determine_state_from_volume(gdouble volume_percent) } else if (volume_percent == 0.0) { state = STATE_ZERO; } - update_state(state); + return state; } +void +update_state_from_volume(gdouble volume_percent) +{ + gint state = determine_state_from_volume(volume_percent); + if (state == STATE_INVALID) + return; + + update_state(state); +} static gboolean start_animation() @@ -753,7 +762,7 @@ react_to_signal_sink_mute_update(gboolean mute_value, IndicatorSound* self) GtkWidget* slider_widget = volume_widget_get_ido_slider(VOLUME_WIDGET(priv->volume_widget)); gtk_widget_set_sensitive(slider_widget, !mute_value); if(mute_value == FALSE){ - determine_state_from_volume (volume_widget_get_current_volume(priv->volume_widget)); + update_state_from_volume (volume_widget_get_current_volume(priv->volume_widget)); } } @@ -768,7 +777,7 @@ react_to_signal_sink_availability_update(gboolean available_value, IndicatorSoun } IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(self); - determine_state_from_volume (volume_widget_get_current_volume(priv->volume_widget)); + update_state_from_volume (volume_widget_get_current_volume(priv->volume_widget)); //g_debug("signal caught - sink availability update with value: %i", available_value); } diff --git a/src/indicator-sound.h b/src/indicator-sound.h index 9f829bb..7bf69b6 100644 --- a/src/indicator-sound.h +++ b/src/indicator-sound.h @@ -53,7 +53,7 @@ struct _IndicatorSound { GType indicator_sound_get_type (void); void prepare_state_machine(); -extern void determine_state_from_volume(gdouble volume_percent); +extern void update_state_from_volume(gdouble volume_percent); gint get_state(); gchar* get_state_image_name(gint state); void prepare_for_tests(IndicatorObject * io); diff --git a/src/volume-widget.c b/src/volume-widget.c index 38dc9bb..9fa1395 100644 --- a/src/volume-widget.c +++ b/src/volume-widget.c @@ -137,7 +137,7 @@ volume_widget_property_update( DbusmenuMenuitem* item, gchar* property, gdouble update = g_variant_get_double (value); //g_debug("volume-widget - update level with value %f", update); gtk_range_set_value(range, update); - determine_state_from_volume(update); + update_state_from_volume(update); } } } @@ -157,7 +157,7 @@ volume_widget_set_twin_item(VolumeWidget* self, GtkWidget *slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)priv->ido_volume_slider); GtkRange *range = (GtkRange*)slider; gtk_range_set_value(range, initial_level); - determine_state_from_volume(initial_level); + update_state_from_volume(initial_level); } static gboolean @@ -169,7 +169,7 @@ volume_widget_change_value_cb (GtkRange *range, g_return_val_if_fail (IS_VOLUME_WIDGET (user_data), FALSE); VolumeWidget* mitem = VOLUME_WIDGET(user_data); volume_widget_update(mitem, new_value); - determine_state_from_volume(new_value); + update_state_from_volume(new_value); return FALSE; } |