diff -Nru gnome-settings-daemon-3.4.2/debian/changelog gnome-settings-daemon-3.4.2/debian/changelog --- gnome-settings-daemon-3.4.2/debian/changelog 2012-09-29 11:05:21.000000000 +1000 +++ gnome-settings-daemon-3.4.2/debian/changelog 2012-11-28 08:13:42.000000000 +1100 @@ -1,3 +1,10 @@ +gnome-settings-daemon (3.4.2-0ubuntu14.1) quantal-proposed; urgency=low + + * debian/patches/git_xscreensaver_watchdog.patch + -Backport patch from 3.6 to fix screen blanking (LP: #1046118 + + -- Tim Lunn Wed, 28 Nov 2012 08:11:17 +1100 + gnome-settings-daemon (3.4.2-0ubuntu14) quantal; urgency=low * debian/patches/git_power_dbus_path.patch: diff -Nru gnome-settings-daemon-3.4.2/debian/patches/git_power_xscreensaver_watchdog.patch gnome-settings-daemon-3.4.2/debian/patches/git_power_xscreensaver_watchdog.patch --- gnome-settings-daemon-3.4.2/debian/patches/git_power_xscreensaver_watchdog.patch 1970-01-01 10:00:00.000000000 +1000 +++ gnome-settings-daemon-3.4.2/debian/patches/git_power_xscreensaver_watchdog.patch 2012-11-28 08:10:35.000000000 +1100 @@ -0,0 +1,138 @@ +From b47e4019a12ac84fba31e1c631d878ce03fa3808 Mon Sep 17 00:00:00 2001 +From: Rui Matos +Date: Wed, 17 Oct 2012 22:44:54 +0000 +Subject: power: Add a watchdog to keep X's builtin screen saver disabled + +X's builtin screen saver may activate DPMS. Since we want to activate +DPMS ourselves according to our own policy we must make sure that X's +screen saver remains disabled. + +This code is a copy of the original found in gs-watcher-x11.c from +gnome-screensaver which stopped being used in GNOME 3.6. + +https://bugzilla.gnome.org/show_bug.cgi?id=686339 +--- +Index: gnome-settings-daemon-3.4.2/plugins/power/gsd-power-manager.c +=================================================================== +--- gnome-settings-daemon-3.4.2.orig/plugins/power/gsd-power-manager.c 2012-11-28 07:37:30.000000000 +1100 ++++ gnome-settings-daemon-3.4.2/plugins/power/gsd-power-manager.c 2012-11-28 08:10:29.000000000 +1100 +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + #include + #include + #include +@@ -197,8 +198,11 @@ + guint timeout_blank_id; + guint timeout_sleep_id; + GtkStatusIcon *status_icon; ++ guint xscreensaver_watchdog_timer_id; + }; + ++#define XSCREENSAVER_WATCHDOG_TIMEOUT 120 /* seconds */ ++ + enum { + PROP_0, + }; +@@ -3670,6 +3674,77 @@ + idle_set_mode (manager, GSD_POWER_IDLE_MODE_NORMAL); + } + ++/* This timer goes off every few minutes, whether the user is idle or not, ++ to try and clean up anything that has gone wrong. ++ ++ It calls disable_builtin_screensaver() so that if xset has been used, ++ or some other program (like xlock) has messed with the XSetScreenSaver() ++ settings, they will be set back to sensible values (if a server extension ++ is in use, messing with xlock can cause the screensaver to never get a wakeup ++ event, and could cause monitor power-saving to occur, and all manner of ++ heinousness.) ++ ++ This code was originally part of gnome-screensaver, see ++ http://git.gnome.org/browse/gnome-screensaver/tree/src/gs-watcher-x11.c?id=fec00b12ec46c86334cfd36b37771cc4632f0d4d#n530 ++ */ ++static gboolean ++disable_builtin_screensaver (gpointer unused) ++{ ++ int current_server_timeout, current_server_interval; ++ int current_prefer_blank, current_allow_exp; ++ int desired_server_timeout, desired_server_interval; ++ int desired_prefer_blank, desired_allow_exp; ++ ++ XGetScreenSaver (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), ++ ¤t_server_timeout, ++ ¤t_server_interval, ++ ¤t_prefer_blank, ++ ¤t_allow_exp); ++ ++ desired_server_timeout = current_server_timeout; ++ desired_server_interval = current_server_interval; ++ desired_prefer_blank = current_prefer_blank; ++ desired_allow_exp = current_allow_exp; ++ ++ desired_server_interval = 0; ++ ++ /* I suspect (but am not sure) that DontAllowExposures might have ++ something to do with powering off the monitor as well, at least ++ on some systems that don't support XDPMS? Who know... */ ++ desired_allow_exp = AllowExposures; ++ ++ /* When we're not using an extension, set the server-side timeout to 0, ++ so that the server never gets involved with screen blanking, and we ++ do it all ourselves. (However, when we *are* using an extension, ++ we tell the server when to notify us, and rather than blanking the ++ screen, the server will send us an X event telling us to blank.) ++ */ ++ desired_server_timeout = 0; ++ ++ if (desired_server_timeout != current_server_timeout ++ || desired_server_interval != current_server_interval ++ || desired_prefer_blank != current_prefer_blank ++ || desired_allow_exp != current_allow_exp) { ++ ++ g_debug ("disabling server builtin screensaver:" ++ " (xset s %d %d; xset s %s; xset s %s)", ++ desired_server_timeout, ++ desired_server_interval, ++ (desired_prefer_blank ? "blank" : "noblank"), ++ (desired_allow_exp ? "expose" : "noexpose")); ++ ++ XSetScreenSaver (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), ++ desired_server_timeout, ++ desired_server_interval, ++ desired_prefer_blank, ++ desired_allow_exp); ++ ++ XSync (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), FALSE); ++ } ++ ++ return TRUE; ++} ++ + gboolean + gsd_power_manager_start (GsdPowerManager *manager, + GError **error) +@@ -3828,6 +3903,9 @@ + /* set the initial dim time that can adapt for the user */ + refresh_idle_dim_settings (manager); + ++ manager->priv->xscreensaver_watchdog_timer_id = g_timeout_add_seconds (XSCREENSAVER_WATCHDOG_TIMEOUT, ++ disable_builtin_screensaver, ++ NULL); + gnome_settings_profile_end (NULL); + return TRUE; + } +@@ -3926,6 +4004,11 @@ + g_object_unref (manager->priv->status_icon); + manager->priv->idletime = NULL; + manager->priv->status_icon = NULL; ++ ++ if (manager->priv->xscreensaver_watchdog_timer_id > 0) { ++ g_source_remove (manager->priv->xscreensaver_watchdog_timer_id); ++ manager->priv->xscreensaver_watchdog_timer_id = 0; ++ } + } + + static void diff -Nru gnome-settings-daemon-3.4.2/debian/patches/series gnome-settings-daemon-3.4.2/debian/patches/series --- gnome-settings-daemon-3.4.2/debian/patches/series 2012-09-29 11:05:21.000000000 +1000 +++ gnome-settings-daemon-3.4.2/debian/patches/series 2012-11-28 07:40:30.000000000 +1100 @@ -30,3 +30,4 @@ git_better_xi_handling.patch git_new_cups_build.patch git_power_dbus_path.patch +git_power_xscreensaver_watchdog.patch