diff options
author | Bastien Nocera <hadess@hadess.net> | 2014-07-25 12:11:46 +0200 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2014-07-26 00:11:14 +0200 |
commit | d146ef6d216695de3988582f4024019ef4968f4f (patch) | |
tree | e3bee1cd38781fc68ae546562564d336f9f0e617 | |
parent | 1bd84fb1634e516dd4a1e94ef47ade699aa1d225 (diff) | |
download | gnome-settings-daemon-d146ef6d216695de3988582f4024019ef4968f4f.tar.gz |
media-keys: Don't show Orientation lock popup if not supported
https://bugzilla.gnome.org/show_bug.cgi?id=732159
-rw-r--r-- | 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 71f45a06..71eb16ce 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; @@ -1660,12 +1664,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); @@ -2386,6 +2414,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; @@ -2434,6 +2470,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 |