about summary refs log tree commit diff
path: root/pkgs/desktops/cinnamon/dpms.patch
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/desktops/cinnamon/dpms.patch')
-rw-r--r--pkgs/desktops/cinnamon/dpms.patch30
1 files changed, 30 insertions, 0 deletions
diff --git a/pkgs/desktops/cinnamon/dpms.patch b/pkgs/desktops/cinnamon/dpms.patch
new file mode 100644
index 000000000000..a73f33dc6182
--- /dev/null
+++ b/pkgs/desktops/cinnamon/dpms.patch
@@ -0,0 +1,30 @@
+ 
+-- a/plugins/power/csd-power-manager.c
++++ b/plugins/power/csd-power-manager.c
+@@ -33,6 +33,8 @@
+ #include <libnotify/notify.h>
+ #include <canberra-gtk.h>
+ 
++#include <X11/extensions/dpms.h>
++
+ #define GNOME_DESKTOP_USE_UNSTABLE_API
+ #include <libcinnamon-desktop/gnome-rr.h>
+ 
+@@ -3967,6 +3790,17 @@ csd_power_manager_start (CsdPowerManager
+         /* set the initial dim time that can adapt for the user */
+         refresh_idle_dim_settings (manager);
+ 
++        /* Make sure that Xorg's DPMS extension never gets in our way. The defaults seem to have changed in Xorg 1.14
++         * being "0" by default to being "600" by default 
++         * https://bugzilla.gnome.org/show_bug.cgi?id=709114
++         */
++        gdk_error_trap_push ();
++        int dummy;
++        if (DPMSQueryExtension(GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), &dummy, &dummy)) {
++            DPMSSetTimeouts (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), 0, 0, 0);
++        }
++        gdk_error_trap_pop_ignored ();
++
+         manager->priv->xscreensaver_watchdog_timer_id = g_timeout_add_seconds (XSCREENSAVER_WATCHDOG_TIMEOUT,
+                                                                                disable_builtin_screensaver,
+                                                                                NULL);