[gnome-desktop] Clear the DPMS timeouts even when the DPMS mode has not changed



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, &current_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]