[gnome-desktop] Clear the DPMS timeouts even when the DPMS mode has not changed
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-desktop] Clear the DPMS timeouts even when the DPMS mode has not changed
- Date: Mon, 3 Oct 2011 16:34:44 +0000 (UTC)
commit 8559c7853d34664128cd2e4388b3c0e5cf9f7d21
Author: Richard Hughes <richard hughsie com>
Date: Mon Oct 3 17:34:10 2011 +0100
Clear the DPMS timeouts even when the DPMS mode has not changed
libgnome-desktop/gnome-rr.c | 34 +++++++++++++++++++++++++++++++++-
1 files changed, 33 insertions(+), 1 deletions(-)
---
diff --git a/libgnome-desktop/gnome-rr.c b/libgnome-desktop/gnome-rr.c
index 66e8142..d2cfe7b 100644
--- a/libgnome-desktop/gnome-rr.c
+++ b/libgnome-desktop/gnome-rr.c
@@ -1175,6 +1175,33 @@ out:
}
/**
+ * gnome_rr_screen_clear_dpms_timeouts:
+ **/
+static gboolean
+gnome_rr_screen_clear_dpms_timeouts (GnomeRRScreen *screen,
+ GError **error)
+{
+ gboolean ret = TRUE;
+ gint rc;
+
+ gdk_error_trap_push ();
+ rc = DPMSSetTimeouts (screen->priv->xdisplay, 0, 0, 0);
+ if (gdk_error_trap_pop ())
+ ret = FALSE;
+
+ if (!ret || rc != Success) {
+ ret = FALSE;
+ g_set_error_literal (error,
+ GNOME_RR_ERROR,
+ GNOME_RR_ERROR_UNKNOWN,
+ "Could not set DPMS timeouts");
+ goto out;
+ }
+out:
+ return ret;
+}
+
+/**
* gnome_rr_screen_set_dpms_mode:
*
* This method also disables the DPMS timeouts.
@@ -1195,8 +1222,10 @@ gnome_rr_screen_set_dpms_mode (GnomeRRScreen *screen,
ret = gnome_rr_screen_get_dpms_mode (screen, ¤t_mode, error);
if (!ret)
goto out;
- if (current_mode == mode)
+ if (current_mode == mode) {
+ ret = gnome_rr_screen_clear_dpms_timeouts (screen, error);
goto out;
+ }
switch (mode) {
case GNOME_RR_DPMS_ON:
@@ -1244,6 +1273,9 @@ gnome_rr_screen_set_dpms_mode (GnomeRRScreen *screen,
goto out;
}
+ ret = gnome_rr_screen_clear_dpms_timeouts (screen, error);
+ if (!ret)
+ goto out;
out:
return ret;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]