[gnome-settings-daemon] media-keys: Don't show Orientation lock popup if not supported



commit 5734ca705fb3f7b8fefe48c33a8e9a8e25bbdbfa
Author: Bastien Nocera <hadess hadess net>
Date:   Fri Jul 25 12:11:46 2014 +0200

    media-keys: Don't show Orientation lock popup if not supported
    
    https://bugzilla.gnome.org/show_bug.cgi?id=732159

 plugins/media-keys/gsd-media-keys-manager.c |   41 +++++++++++++++++++++++++++
 1 files changed, 41 insertions(+), 0 deletions(-)
---
diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
index 3c24fd4..c0891da 100644
--- a/plugins/media-keys/gsd-media-keys-manager.c
+++ b/plugins/media-keys/gsd-media-keys-manager.c
@@ -178,6 +178,10 @@ struct GsdMediaKeysManagerPrivate
         gboolean         screencast_recording;
         GCancellable    *screencast_cancellable;
 
+        /* Rotation */
+        guint            orientation_watch_id;
+        gboolean         orientation_available;
+
         /* systemd stuff */
         GDBusProxy      *logind_proxy;
         gint             inhibit_keys_fd;
@@ -1603,12 +1607,36 @@ do_video_rotate_action (GsdMediaKeysManager *manager,
 }
 
 static void
+orientation_appeared_cb (GDBusConnection *connection,
+                         const gchar     *name,
+                         const gchar     *name_owner,
+                         gpointer         user_data)
+{
+        GsdMediaKeysManager *manager = user_data;
+
+        manager->priv->orientation_available = TRUE;
+}
+
+static void
+orientation_disappeared_cb (GDBusConnection *connection,
+                            const gchar     *name,
+                            gpointer         user_data)
+{
+        GsdMediaKeysManager *manager = user_data;
+
+        manager->priv->orientation_available = FALSE;
+}
+
+static void
 do_video_rotate_lock_action (GsdMediaKeysManager *manager,
                              gint64               timestamp)
 {
         GSettings *settings;
         gboolean locked;
 
+        if (!manager->priv->orientation_available)
+                return;
+
         settings = g_settings_new ("org.gnome.settings-daemon.peripherals.touchscreen");
         locked = !g_settings_get_boolean (settings, "orientation-lock");
         g_settings_set_boolean (settings, "orientation-lock", locked);
@@ -2331,6 +2359,14 @@ start_media_keys_idle_cb (GsdMediaKeysManager *manager)
         g_debug ("Starting mpris controller");
         manager->priv->mpris_controller = mpris_controller_new ();
 
+        /* Rotation */
+        manager->priv->orientation_watch_id = g_bus_watch_name (G_BUS_TYPE_SESSION,
+                                                                "org.gnome.SettingsDaemon.Orientation",
+                                                                G_BUS_NAME_WATCHER_FLAGS_NONE,
+                                                                orientation_appeared_cb,
+                                                                orientation_disappeared_cb,
+                                                                manager, NULL);
+
         gnome_settings_profile_end (NULL);
 
         manager->priv->start_idle_id = 0;
@@ -2380,6 +2416,11 @@ gsd_media_keys_manager_stop (GsdMediaKeysManager *manager)
                 manager->priv->gtksettings = NULL;
         }
 
+        if (manager->priv->orientation_watch_id > 0) {
+                g_bus_unwatch_name (manager->priv->orientation_watch_id);
+                manager->priv->orientation_watch_id = 0;
+        }
+
         g_clear_pointer (&manager->priv->ca, ca_context_destroy);
 
 #ifdef HAVE_GUDEV


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