diff options
author | Jonas Dreßler <verdre@v0yd.nl> | 2019-02-02 16:15:47 +0100 |
---|---|---|
committer | Benjamin Berg <benjamin@sipsolutions.net> | 2019-12-12 12:00:05 +0000 |
commit | 7bf807de146ac1fbce9acd88e0d755fb8c26063f (patch) | |
tree | 8e55aea8aac3f2d7638d484c9d603de2b4223361 | |
parent | cd4418653f317fcd2d6a6d69f14fdc2e005e092c (diff) | |
download | gnome-settings-daemon-7bf807de146ac1fbce9acd88e0d755fb8c26063f.tar.gz |
media-keys: Split up update_dialog into two functions
The function `update_dialog` has nothing to do with a dialog, to make
the code better understandable, split it up into two functions:
`show_volume_osd` and `play_volume_changed_audio`.
While at it, also include the function `ensure_canberra` in the new
function since it's only needed here and use `g_signal_connect_swapped`
for the `sound_theme_changed` callback.
https://gitlab.gnome.org/GNOME/gnome-settings-daemon/merge_requests/77
-rw-r--r-- | plugins/media-keys/gsd-media-keys-manager.c | 74 |
1 files changed, 37 insertions, 37 deletions
diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c index f4ab76f5..7d3cdf54 100644 --- a/plugins/media-keys/gsd-media-keys-manager.c +++ b/plugins/media-keys/gsd-media-keys-manager.c @@ -1330,9 +1330,7 @@ do_lock_screensaver (GsdMediaKeysManager *manager) } static void -sound_theme_changed (GtkSettings *settings, - GParamSpec *pspec, - GsdMediaKeysManager *manager) +sound_theme_changed (GsdMediaKeysManager *manager) { GsdMediaKeysManagerPrivate *priv = GSD_MEDIA_KEYS_MANAGER_GET_PRIVATE (manager); char *theme_name; @@ -1358,35 +1356,45 @@ allow_volume_above_100_percent_changed_cb (GSettings *settings, } static void -ensure_canberra (GsdMediaKeysManager *manager) +play_volume_changed_audio (GsdMediaKeysManager *manager, + GvcMixerStream *stream) { GsdMediaKeysManagerPrivate *priv = GSD_MEDIA_KEYS_MANAGER_GET_PRIVATE (manager); - char *theme_name; - if (priv->ca != NULL) - return; + if (priv->ca == NULL) { + ca_context_create (&priv->ca); + ca_context_set_driver (priv->ca, "pulse"); + ca_context_change_props (priv->ca, 0, + CA_PROP_APPLICATION_ID, + "org.gnome.VolumeControl", + NULL); - ca_context_create (&priv->ca); - ca_context_set_driver (priv->ca, "pulse"); - ca_context_change_props (priv->ca, 0, - CA_PROP_APPLICATION_ID, "org.gnome.VolumeControl", - NULL); - priv->gtksettings = gtk_settings_get_for_screen (gdk_screen_get_default ()); - g_object_get (G_OBJECT (priv->gtksettings), "gtk-sound-theme-name", &theme_name, NULL); - if (theme_name) - ca_context_change_props (priv->ca, CA_PROP_CANBERRA_XDG_THEME_NAME, theme_name, NULL); - g_free (theme_name); - g_signal_connect (priv->gtksettings, "notify::gtk-sound-theme-name", - G_CALLBACK (sound_theme_changed), manager); + priv->gtksettings = + gtk_settings_get_for_screen (gdk_screen_get_default ()); + + g_signal_connect_swapped (priv->gtksettings, + "notify::gtk-sound-theme-name", + G_CALLBACK (sound_theme_changed), + manager); + sound_theme_changed (manager); + } + + ca_context_change_device (priv->ca, + gvc_mixer_stream_get_name (stream)); + ca_context_play (priv->ca, 1, + CA_PROP_EVENT_ID, "audio-volume-change", + CA_PROP_EVENT_DESCRIPTION, "volume changed through key press", + CA_PROP_CANBERRA_CACHE_CONTROL, "permanent", + NULL); } static void -update_dialog (GsdMediaKeysManager *manager, - GvcMixerStream *stream, - guint vol, - gboolean muted, - gboolean sound_changed, - gboolean quiet) +show_volume_osd (GsdMediaKeysManager *manager, + GvcMixerStream *stream, + guint vol, + gboolean muted, + gboolean sound_changed, + gboolean quiet) { GsdMediaKeysManagerPrivate *priv = GSD_MEDIA_KEYS_MANAGER_GET_PRIVATE (manager); GvcMixerUIDevice *device; @@ -1419,16 +1427,8 @@ update_dialog (GsdMediaKeysManager *manager, playing = gvc_mixer_stream_get_state (stream) == GVC_STREAM_STATE_RUNNING; - if (quiet == FALSE && sound_changed != FALSE && muted == FALSE && playing == FALSE) { - ensure_canberra (manager); - ca_context_change_device (priv->ca, - gvc_mixer_stream_get_name (stream)); - ca_context_play (priv->ca, 1, - CA_PROP_EVENT_ID, "audio-volume-change", - CA_PROP_EVENT_DESCRIPTION, "volume changed through key press", - CA_PROP_CANBERRA_CACHE_CONTROL, "permanent", - NULL); - } + if (quiet == FALSE && sound_changed != FALSE && muted == FALSE && playing == FALSE) + play_volume_changed_audio (manager, stream); } #if HAVE_GUDEV @@ -1615,8 +1615,8 @@ do_sound_action (GsdMediaKeysManager *manager, } } - update_dialog (manager, stream, new_vol, new_muted, sound_changed, - flags & SOUND_ACTION_FLAG_IS_QUIET); + show_volume_osd (manager, stream, new_vol, new_muted, sound_changed, + flags & SOUND_ACTION_FLAG_IS_QUIET); } static void |