From f55a6f37d0805fd9f8270903929cdf08fda55e39 Mon Sep 17 00:00:00 2001 From: William Brown Date: Sun, 18 Nov 2012 12:06:34 +1030 Subject: Current work on systemd-inhibit support in mpm. DOES NOT WORK YET. See https://bugzilla.redhat.com/show_bug.cgi?id=876396 and https://bugzilla.redhat.com/show_bug.cgi?id=876782 --- src/gpm-manager.c | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) (limited to 'src') diff --git a/src/gpm-manager.c b/src/gpm-manager.c index 9ee8781..150379d 100644 --- a/src/gpm-manager.c +++ b/src/gpm-manager.c @@ -100,6 +100,8 @@ struct GpmManagerPrivate NotifyNotification *notification_warning_low; NotifyNotification *notification_discharging; NotifyNotification *notification_fully_charged; + gint32 systemd_inhibit; + GDBusProxy *systemd_inhibit_proxy; }; typedef enum { @@ -1840,6 +1842,60 @@ gpm_manager_control_resume_cb (GpmControl *control, GpmControlAction action, Gpm g_timeout_add_seconds (1, gpm_manager_reset_just_resumed_cb, manager); } +/** + * gpm_main_system_inhibit: + **/ +static gint32 +gpm_manager_systemd_inhibit (GDBusProxy *proxy) { + /* Return a fd to the to the inhibitor, that we can close on exit. */ + //GDBusProxy *proxy; + GError *error = NULL; + gint32 r = -1; + + proxy == NULL; + /* Should we define these elsewhere? */ + const char* arg_what = "handle-power-key:handle-suspend-key:handle-lid-switch"; + const char* arg_who = "mate-power-manager"; + const char* arg_why = "Mate power manager handles these events"; + const char* arg_mode = "block"; + + egg_debug ("Inhibiting systemd sleep"); + proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, + G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, + NULL, + "org.freedesktop.login1", + "/org/freedesktop/login1", + "org.freedesktop.login1.Manager", + NULL, + &error ); + //append all our arguments + if (proxy == NULL) { + egg_error("Error connecting to dbus - %s", error->message); + g_error_free (error); + return -1; + } + r = g_dbus_proxy_call_sync (proxy, "Inhibit", + g_variant_new( "(ssss)", + arg_what, + arg_who, + arg_why, + arg_mode + ), + G_DBUS_CALL_FLAGS_NONE, + -1, + NULL, + &error + ); + egg_debug ("Inhibiting systemd sleep - fd = %i", r); + if (r < 1) { + egg_error ("Error in dbus - %s", error->message); + g_error_free (error); + return -EIO; + } + egg_debug ("Inhibiting systemd sleep - success"); + return r; +} + /** * gpm_manager_init: * @manager: This class instance @@ -1857,6 +1913,9 @@ gpm_manager_init (GpmManager *manager) connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); g_connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); + /* We want to inhibit the systemd suspend options, and take care of them ourselves */ + manager->priv->systemd_inhibit = gpm_manager_systemd_inhibit (manager->priv->systemd_inhibit_proxy); + /* init to unthrottled */ manager->priv->screensaver_ac_throttle_id = 0; manager->priv->screensaver_dpms_throttle_id = 0; @@ -2014,6 +2073,15 @@ gpm_manager_finalize (GObject *object) g_object_unref (manager->priv->client); g_object_unref (manager->priv->status_icon); + /* Let systemd take over again ... */ + if (manager->priv->systemd_inhibit > 0) { + close(manager->priv->systemd_inhibit); + } + if (manager->priv->systemd_inhibit_proxy != NULL) { + g_object_unref (manager->priv->systemd_inhibit_proxy); + } + //g_object_unref (manager->priv->systemd_inhibit); + G_OBJECT_CLASS (gpm_manager_parent_class)->finalize (object); } -- cgit v1.2.1 From d0eea338cc627b3083e16669a7f3e7a738410818 Mon Sep 17 00:00:00 2001 From: William Brown Date: Sun, 18 Nov 2012 12:06:34 +1030 Subject: Current work on systemd-inhibit support in mpm. DOES NOT WORK YET. See https://bugzilla.redhat.com/show_bug.cgi?id=876396 and https://bugzilla.redhat.com/show_bug.cgi?id=876782 --- src/gpm-manager.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/gpm-manager.c b/src/gpm-manager.c index 150379d..3236406 100644 --- a/src/gpm-manager.c +++ b/src/gpm-manager.c @@ -1852,7 +1852,7 @@ gpm_manager_systemd_inhibit (GDBusProxy *proxy) { GError *error = NULL; gint32 r = -1; - proxy == NULL; + //proxy == NULL; /* Should we define these elsewhere? */ const char* arg_what = "handle-power-key:handle-suspend-key:handle-lid-switch"; const char* arg_who = "mate-power-manager"; -- cgit v1.2.1 From bb165fa927540f40b2b2afce1b4703f6e2cffbb1 Mon Sep 17 00:00:00 2001 From: William Brown Date: Tue, 20 Nov 2012 00:08:50 +1030 Subject: This now uses the gvariant, and fixes some code logic issues --- src/gpm-manager.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/gpm-manager.c b/src/gpm-manager.c index 3236406..dc838c5 100644 --- a/src/gpm-manager.c +++ b/src/gpm-manager.c @@ -1851,7 +1851,7 @@ gpm_manager_systemd_inhibit (GDBusProxy *proxy) { //GDBusProxy *proxy; GError *error = NULL; gint32 r = -1; - + GVariant *res; //proxy == NULL; /* Should we define these elsewhere? */ const char* arg_what = "handle-power-key:handle-suspend-key:handle-lid-switch"; @@ -1874,7 +1874,7 @@ gpm_manager_systemd_inhibit (GDBusProxy *proxy) { g_error_free (error); return -1; } - r = g_dbus_proxy_call_sync (proxy, "Inhibit", + res = g_dbus_proxy_call_sync (proxy, "Inhibit", g_variant_new( "(ssss)", arg_what, arg_who, @@ -1886,11 +1886,17 @@ gpm_manager_systemd_inhibit (GDBusProxy *proxy) { NULL, &error ); - egg_debug ("Inhibiting systemd sleep - fd = %i", r); - if (r < 1) { + if (error == NULL) { + g_variant_get(res, "(h)", &r); + egg_debug ("Inhibiting systemd sleep - fd = %i", r); + } else if (error != NULL) { egg_error ("Error in dbus - %s", error->message); g_error_free (error); - return -EIO; + return -EIO; + } + if (r < 1) { + egg_error ("Error in FD was less than or 0 - %i", r); + return -EIO; } egg_debug ("Inhibiting systemd sleep - success"); return r; -- cgit v1.2.1 From c5c3b2a3d755e32a851bf7b3c7ef92a056b5bdef Mon Sep 17 00:00:00 2001 From: William Brown Date: Wed, 21 Nov 2012 09:06:22 +1030 Subject: Initial working support for systemd inhibition --- src/gpm-manager.c | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/src/gpm-manager.c b/src/gpm-manager.c index dc838c5..34d8e9a 100644 --- a/src/gpm-manager.c +++ b/src/gpm-manager.c @@ -1851,11 +1851,13 @@ gpm_manager_systemd_inhibit (GDBusProxy *proxy) { //GDBusProxy *proxy; GError *error = NULL; gint32 r = -1; + gint32 fd = -1; GVariant *res; + GUnixFDList *fd_list = NULL; //proxy == NULL; /* Should we define these elsewhere? */ const char* arg_what = "handle-power-key:handle-suspend-key:handle-lid-switch"; - const char* arg_who = "mate-power-manager"; + const char* arg_who = g_get_user_name (); const char* arg_why = "Mate power manager handles these events"; const char* arg_mode = "block"; @@ -1874,7 +1876,7 @@ gpm_manager_systemd_inhibit (GDBusProxy *proxy) { g_error_free (error); return -1; } - res = g_dbus_proxy_call_sync (proxy, "Inhibit", + res = g_dbus_proxy_call_with_unix_fd_list_sync (proxy, "Inhibit", g_variant_new( "(ssss)", arg_what, arg_who, @@ -1884,20 +1886,26 @@ gpm_manager_systemd_inhibit (GDBusProxy *proxy) { G_DBUS_CALL_FLAGS_NONE, -1, NULL, + &fd_list, + NULL, &error ); - if (error == NULL) { + if (error == NULL && res != NULL) { g_variant_get(res, "(h)", &r); - egg_debug ("Inhibiting systemd sleep - fd = %i", r); - } else if (error != NULL) { + egg_debug ("Inhibiting systemd sleep res = %i", r); + fd = g_unix_fd_list_get (fd_list, r, &error); + if (fd == -1) { + egg_debug("Failed to get systemd inhibitor"); + return r; + } + egg_debug ("System inhibitor fd is %d", fd); + g_object_unref (fd_list); + g_variant_unref (res); + } else if (error != NULL || res == NULL) { egg_error ("Error in dbus - %s", error->message); g_error_free (error); return -EIO; } - if (r < 1) { - egg_error ("Error in FD was less than or 0 - %i", r); - return -EIO; - } egg_debug ("Inhibiting systemd sleep - success"); return r; } -- cgit v1.2.1 From 30eed18125a03a0bede7f5e560f8f031db70dcbe Mon Sep 17 00:00:00 2001 From: William Brown Date: Wed, 21 Nov 2012 09:15:29 +1030 Subject: Adds a systemdinhibit configure flag --- src/gpm-manager.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src') diff --git a/src/gpm-manager.c b/src/gpm-manager.c index 34d8e9a..c6f4d79 100644 --- a/src/gpm-manager.c +++ b/src/gpm-manager.c @@ -1842,6 +1842,7 @@ gpm_manager_control_resume_cb (GpmControl *control, GpmControlAction action, Gpm g_timeout_add_seconds (1, gpm_manager_reset_just_resumed_cb, manager); } +#ifdef WITH_SYSTEMD_INHIBIT /** * gpm_main_system_inhibit: **/ @@ -1909,6 +1910,7 @@ gpm_manager_systemd_inhibit (GDBusProxy *proxy) { egg_debug ("Inhibiting systemd sleep - success"); return r; } +#endif /** * gpm_manager_init: @@ -1927,8 +1929,10 @@ gpm_manager_init (GpmManager *manager) connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error); g_connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &error); +#ifdef WITH_SYSTEMD_INHIBIT /* We want to inhibit the systemd suspend options, and take care of them ourselves */ manager->priv->systemd_inhibit = gpm_manager_systemd_inhibit (manager->priv->systemd_inhibit_proxy); +#endif /* init to unthrottled */ manager->priv->screensaver_ac_throttle_id = 0; @@ -2087,6 +2091,7 @@ gpm_manager_finalize (GObject *object) g_object_unref (manager->priv->client); g_object_unref (manager->priv->status_icon); +#ifdef WITH_SYSTEMD_INHIBIT /* Let systemd take over again ... */ if (manager->priv->systemd_inhibit > 0) { close(manager->priv->systemd_inhibit); @@ -2095,6 +2100,7 @@ gpm_manager_finalize (GObject *object) g_object_unref (manager->priv->systemd_inhibit_proxy); } //g_object_unref (manager->priv->systemd_inhibit); +#endif G_OBJECT_CLASS (gpm_manager_parent_class)->finalize (object); } -- cgit v1.2.1 From cc5f970075a80bd31ab0dcafe7fa6544082ace96 Mon Sep 17 00:00:00 2001 From: William Brown Date: Tue, 20 Nov 2012 19:40:46 +1030 Subject: Adds on screen display support to keyboard backlight controls --- src/gpm-kbd-backlight.c | 148 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 128 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/src/gpm-kbd-backlight.c b/src/gpm-kbd-backlight.c index 4ed3fcf..d958751 100644 --- a/src/gpm-kbd-backlight.c +++ b/src/gpm-kbd-backlight.c @@ -23,11 +23,13 @@ #include #include +#include "egg-debug.h" #include "gpm-button.h" #include "gpm-common.h" #include "gpm-control.h" #include "gpm-idle.h" #include "gpm-kbd-backlight.h" +#include "gsd-media-keys-window.h" static const gchar *kbd_backlight_introspection = "" """" @@ -48,23 +50,24 @@ static const gchar *kbd_backlight_introspection = "" struct GpmKbdBacklightPrivate { - UpClient *client; - GpmButton *button; - GSettings *settings; - GSettings *settings_gsd; - GpmControl *control; - GpmIdle *idle; - gboolean can_dim; - gboolean system_is_idle; - GTimer *idle_timer; - guint idle_dim_timeout; - guint master_percentage; - guint brightness; - guint max_brightness; - guint brightness_percent; - GDBusProxy *upower_proxy; - GDBusConnection *bus_connection; - guint bus_object_id; + UpClient *client; + GpmButton *button; + GSettings *settings; + GSettings *settings_gsd; + GpmControl *control; + GpmIdle *idle; + gboolean can_dim; + gboolean system_is_idle; + GTimer *idle_timer; + guint idle_dim_timeout; + guint master_percentage; + guint brightness; + guint max_brightness; + guint brightness_percent; + GDBusProxy *upower_proxy; + GDBusConnection *bus_connection; + guint bus_object_id; + GtkWidget *popup; }; enum { @@ -149,6 +152,90 @@ gpm_kbd_backlight_set (GpmKbdBacklight *backlight, return TRUE; } +/** + * gpm_kbd_backlight_dialog_init + **/ +static void +gpm_kbd_backlight_dialog_init (GpmKbdBacklight *backlight) +{ + if (backlight->priv->popup != NULL + && !gsd_media_keys_window_is_valid (GSD_MEDIA_KEYS_WINDOW (backlight->priv->popup))) { + gtk_widget_destroy (backlight->priv->popup); + backlight->priv->popup = NULL; + } + + if (backlight->priv->popup == NULL) { + backlight->priv->popup= gsd_media_keys_window_new (); + gsd_media_keys_window_set_action_custom (GSD_MEDIA_KEYS_WINDOW (backlight->priv->popup), + "gpm-brightness-kbd", + TRUE); + gtk_window_set_position (GTK_WINDOW (backlight->priv->popup), GTK_WIN_POS_NONE); + + } +} +/** + * gpm_kbd_backlight_dialog_show: + * + * Show the brightness popup, and place it nicely on the screen. + **/ +static void +gpm_kbd_backlight_dialog_show (GpmKbdBacklight *backlight) +{ + int orig_w; + int orig_h; + int screen_w; + int screen_h; + int x; + int y; + int pointer_x; + int pointer_y; + GtkRequisition win_req; + GdkScreen *pointer_screen; + GdkRectangle geometry; + int monitor; + + /* + * get the window size + * if the window hasn't been mapped, it doesn't necessarily + * know its true size, yet, so we need to jump through hoops + */ + gtk_window_get_default_size (GTK_WINDOW (backlight->priv->popup), &orig_w, &orig_h); + gtk_widget_size_request (backlight->priv->popup, &win_req); + + if (win_req.width > orig_w) { + orig_w = win_req.width; + } + if (win_req.height > orig_h) { + orig_h = win_req.height; + } + + pointer_screen = NULL; + gdk_display_get_pointer (gtk_widget_get_display (backlight->priv->popup), + &pointer_screen, + &pointer_x, + &pointer_y, + NULL); + monitor = gdk_screen_get_monitor_at_point (pointer_screen, + pointer_x, + pointer_y); + + gdk_screen_get_monitor_geometry (pointer_screen, + monitor, + &geometry); + + screen_w = geometry.width; + screen_h = geometry.height; + + x = ((screen_w - orig_w) / 2) + geometry.x; + y = geometry.y + (screen_h / 2) + (screen_h / 2 - orig_h) / 2; + + gtk_window_move (GTK_WINDOW (backlight->priv->popup), x, y); + + gtk_widget_show (backlight->priv->popup); + + gdk_display_sync (gtk_widget_get_display (backlight->priv->popup)); +} + /** * gpm_kbd_backlight_brightness_up: **/ @@ -462,15 +549,30 @@ gpm_kbd_backlight_button_pressed_cb (GpmButton *button, GpmKbdBacklight *backlight) { static guint saved_brightness; + gboolean ret; saved_brightness = backlight->priv->master_percentage; if (g_strcmp0 (type, GPM_BUTTON_KBD_BRIGHT_UP) == 0) { - gpm_kbd_backlight_brightness_up (backlight); + ret = gpm_kbd_backlight_brightness_up (backlight); + + if (ret) { + egg_debug("Going to display OSD"); + gpm_kbd_backlight_dialog_init (backlight); + gsd_media_keys_window_set_volume_level (GSD_MEDIA_KEYS_WINDOW (backlight->priv->popup), backlight->priv->brightness_percent); + gpm_kbd_backlight_dialog_show (backlight); + } } else if (g_strcmp0 (type, GPM_BUTTON_KBD_BRIGHT_DOWN) == 0) { - gpm_kbd_backlight_brightness_down (backlight); - + ret = gpm_kbd_backlight_brightness_down (backlight); + + if (ret) { + egg_debug("Going to display OSD"); + gpm_kbd_backlight_dialog_init (backlight); + gsd_media_keys_window_set_volume_level (GSD_MEDIA_KEYS_WINDOW (backlight->priv->popup), backlight->priv->brightness_percent); + gpm_kbd_backlight_dialog_show (backlight); + } + } else if (g_strcmp0 (type, GPM_BUTTON_KBD_BRIGHT_TOGGLE) == 0) { if (backlight->priv->master_percentage == 0) { /* backlight is off turn it back on */ @@ -707,6 +809,12 @@ noerr: g_signal_connect (backlight->priv->idle, "idle-changed", G_CALLBACK (gpm_kbd_backlight_idle_changed_cb), backlight); + /* use a visual widget */ + backlight->priv->popup = gsd_media_keys_window_new (); + gsd_media_keys_window_set_action_custom (GSD_MEDIA_KEYS_WINDOW (backlight->priv->popup), + "gpm-brightness-kbd", TRUE); + gtk_window_set_position (GTK_WINDOW (backlight->priv->popup), GTK_WIN_POS_NONE); + /* since gpm is just starting we can pretty safely assume that we're not idle */ backlight->priv->system_is_idle = FALSE; backlight->priv->idle_dim_timeout = g_settings_get_int (backlight->priv->settings_gsd, GPM_SETTINGS_IDLE_DIM_TIME); -- cgit v1.2.1 From 1e231ca589272dc0a84199b03c28a1b598fc3748 Mon Sep 17 00:00:00 2001 From: William Brown Date: Tue, 20 Nov 2012 21:07:25 +1030 Subject: Added some debuging options --- src/gpm-kbd-backlight.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gpm-kbd-backlight.c b/src/gpm-kbd-backlight.c index d958751..8308422 100644 --- a/src/gpm-kbd-backlight.c +++ b/src/gpm-kbd-backlight.c @@ -148,7 +148,7 @@ gpm_kbd_backlight_set (GpmKbdBacklight *backlight, NULL, NULL); } - + egg_debug("Set brightness to %i", backlight->priv->brightness); return TRUE; } @@ -608,6 +608,8 @@ gpm_kbd_backlight_idle_changed_cb (GpmIdle *idle, gboolean on_battery; gboolean enable_action; + egg_debug("Idle changed"); + lid_closed = gpm_button_is_lid_closed (backlight->priv->button); if (lid_closed) @@ -626,14 +628,16 @@ gpm_kbd_backlight_idle_changed_cb (GpmIdle *idle, return; if (mode == GPM_IDLE_MODE_NORMAL) { + egg_debug("GPM_IDLE_MODE_NORMAL"); backlight->priv->master_percentage = 100; gpm_kbd_backlight_evaluate_power_source_and_set (backlight); } else if (mode == GPM_IDLE_MODE_DIM) { + egg_debug("GPM_IDLE_MODE_DIM"); brightness = backlight->priv->master_percentage; value = g_settings_get_int (backlight->priv->settings, GPM_SETTINGS_KBD_BRIGHTNESS_DIM_BY_ON_IDLE); if (value > 100) { - g_warning ("Cannot scale brightness down by more than 100%%. Scaling by 50%%"); + egg_warning ("Cannot scale brightness down by more than 100%%. Scaling by 50%%"); value = 50; } -- cgit v1.2.1 From 8767ffb8172c1e9ae4410226ac4015309bc03f7f Mon Sep 17 00:00:00 2001 From: William Brown Date: Wed, 21 Nov 2012 00:24:52 +1030 Subject: This fixes the g_settings issue preventing auto dim of keyboard backlight --- src/gpm-kbd-backlight.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/gpm-kbd-backlight.c b/src/gpm-kbd-backlight.c index 8308422..b7aa4a4 100644 --- a/src/gpm-kbd-backlight.c +++ b/src/gpm-kbd-backlight.c @@ -620,9 +620,11 @@ gpm_kbd_backlight_idle_changed_cb (GpmIdle *idle, &on_battery, NULL); + //These were all "settings_gsd" originally + enable_action = on_battery - ? g_settings_get_boolean (backlight->priv->settings_gsd, GPM_SETTINGS_IDLE_DIM_BATT) - : g_settings_get_boolean (backlight->priv->settings_gsd, GPM_SETTINGS_IDLE_DIM_AC); + ? g_settings_get_boolean (backlight->priv->settings, GPM_SETTINGS_IDLE_DIM_BATT) + : g_settings_get_boolean (backlight->priv->settings, GPM_SETTINGS_IDLE_DIM_AC); if (!enable_action) return; @@ -632,7 +634,7 @@ gpm_kbd_backlight_idle_changed_cb (GpmIdle *idle, backlight->priv->master_percentage = 100; gpm_kbd_backlight_evaluate_power_source_and_set (backlight); } else if (mode == GPM_IDLE_MODE_DIM) { - egg_debug("GPM_IDLE_MODE_DIM"); + egg_debug("GPM_IDLE_MODE_DIM"); brightness = backlight->priv->master_percentage; value = g_settings_get_int (backlight->priv->settings, GPM_SETTINGS_KBD_BRIGHTNESS_DIM_BY_ON_IDLE); @@ -678,7 +680,7 @@ gpm_kbd_backlight_finalize (GObject *object) g_object_unref (backlight->priv->control); g_object_unref (backlight->priv->settings); - g_object_unref (backlight->priv->settings_gsd); + //g_object_unref (backlight->priv->settings_gsd); g_object_unref (backlight->priv->client); g_object_unref (backlight->priv->button); g_object_unref (backlight->priv->idle); @@ -801,8 +803,10 @@ noerr: g_signal_connect (backlight->priv->client, "changed", G_CALLBACK (gpm_kbd_backlight_client_changed_cb), backlight); - backlight->priv->settings = g_settings_new (GPM_SETTINGS_SCHEMA); - //backlight->priv->settings_gsd = g_settings_new (GSD_SETTINGS_SCHEMA); + backlight->priv->settings = g_settings_new (GPM_SETTINGS_SCHEMA); + //g_signal_connect (backlight->priv->settings, "changed", G_CALLBACK (gpm_settings_key_changed_cb), backlight); + + //backlight->priv->settings_gsd = g_settings_new (GSD_SETTINGS_SCHEMA); /* watch for kbd brightness up and down button presses */ backlight->priv->button = gpm_button_new (); @@ -821,7 +825,8 @@ noerr: /* since gpm is just starting we can pretty safely assume that we're not idle */ backlight->priv->system_is_idle = FALSE; - backlight->priv->idle_dim_timeout = g_settings_get_int (backlight->priv->settings_gsd, GPM_SETTINGS_IDLE_DIM_TIME); + //This was settings_gsd originally + backlight->priv->idle_dim_timeout = g_settings_get_int (backlight->priv->settings, GPM_SETTINGS_IDLE_DIM_TIME); gpm_idle_set_timeout_dim (backlight->priv->idle, backlight->priv->idle_dim_timeout); /* make sure we turn the keyboard backlight back on after resuming */ -- cgit v1.2.1