From b507461c0f75a223a69d27441a9fb47bbe6b8eb5 Mon Sep 17 00:00:00 2001 From: Rui Matos Date: Wed, 20 May 2015 17:05:37 +0200 Subject: [PATCH] backend-native: Reset idle time on lid open events This makes gnome-settings-daemon turn on the backlight and gnome-shell's screen shield animate. Note that on X sessions, gnome-settings-daemon uses the same upower property to force an innocuous key event into the X server so that the idle time gets reset since Xorg doesn't do this itself on lid events. https://bugzilla.gnome.org/show_bug.cgi?id=749076 --- src/backends/native/meta-backend-native.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/src/backends/native/meta-backend-native.c b/src/backends/native/meta-backend-native.c index 4c2d6a536..a14bd4c4d 100644 --- a/src/backends/native/meta-backend-native.c +++ b/src/backends/native/meta-backend-native.c @@ -29,6 +29,7 @@ #include #include +#include #include "meta-barrier-native.h" #include "meta-idle-monitor-native.h" @@ -40,6 +41,7 @@ struct _MetaBackendNativePrivate { MetaLauncher *launcher; MetaBarrierManagerNative *barrier_manager; + UpClient *up_client; }; typedef struct _MetaBackendNativePrivate MetaBackendNativePrivate; @@ -53,9 +55,22 @@ meta_backend_native_finalize (GObject *object) meta_launcher_free (priv->launcher); + g_object_unref (priv->up_client); + G_OBJECT_CLASS (meta_backend_native_parent_class)->finalize (object); } +static void +lid_is_closed_changed_cb (UpClient *client, + GParamSpec *pspec, + gpointer user_data) +{ + if (up_client_get_lid_is_closed (client)) + return; + + meta_idle_monitor_native_reset_idletime (meta_idle_monitor_get_core ()); +} + static void constrain_to_barriers (ClutterInputDevice *device, guint32 time, @@ -267,6 +282,10 @@ meta_backend_native_init (MetaBackendNative *native) priv->launcher = meta_launcher_new (); priv->barrier_manager = meta_barrier_manager_native_new (); + + priv->up_client = up_client_new (); + g_signal_connect (priv->up_client, "notify::lid-is-closed", + G_CALLBACK (lid_is_closed_changed_cb), NULL); } gboolean