summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2014-07-25 12:11:46 +0200
committerBastien Nocera <hadess@hadess.net>2014-07-26 00:11:14 +0200
commitd146ef6d216695de3988582f4024019ef4968f4f (patch)
treee3bee1cd38781fc68ae546562564d336f9f0e617
parent1bd84fb1634e516dd4a1e94ef47ade699aa1d225 (diff)
downloadgnome-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.c41
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