[gnome-settings-daemon] media-keys: Split up update_dialog into two functions



commit 7bf807de146ac1fbce9acd88e0d755fb8c26063f
Author: Jonas Dreßler <verdre v0yd nl>
Date:   Sat Feb 2 16:15:47 2019 +0100

    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

 plugins/media-keys/gsd-media-keys-manager.c | 74 ++++++++++++++---------------
 1 file 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]