Date: Thursday, October 18, 2012 @ 17:39:23 Author: heftig Revision: 169290
Add screensaver.patch, rebase inhibit patch Added: gnome-settings-daemon/trunk/screensaver.patch Modified: gnome-settings-daemon/trunk/0001-power-and-media-keys-Use-logind-for-suspending-and-r.patch gnome-settings-daemon/trunk/PKGBUILD -----------------------------------------------------------------+ 0001-power-and-media-keys-Use-logind-for-suspending-and-r.patch | 51 +-- PKGBUILD | 12 screensaver.patch | 145 ++++++++++ 3 files changed, 180 insertions(+), 28 deletions(-) Modified: 0001-power-and-media-keys-Use-logind-for-suspending-and-r.patch =================================================================== --- 0001-power-and-media-keys-Use-logind-for-suspending-and-r.patch 2012-10-18 19:49:22 UTC (rev 169289) +++ 0001-power-and-media-keys-Use-logind-for-suspending-and-r.patch 2012-10-18 21:39:23 UTC (rev 169290) @@ -1,4 +1,4 @@ -From a26f7c5190ebc82f9f17e0446159311377b20d3f Mon Sep 17 00:00:00 2001 +From 79ead5309fe21e77cfe58adc6a9340953c2d52f4 Mon Sep 17 00:00:00 2001 From: Richard Hughes <[email protected]> Date: Fri, 21 Sep 2012 11:56:53 +0100 Subject: [PATCH] power and media-keys: Use logind for suspending and @@ -545,7 +545,7 @@ GsdMediaKeysManager * diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c -index 0e06495..7c120c4 100644 +index 070cf32..18fcedf 100644 --- a/plugins/power/gsd-power-manager.c +++ b/plugins/power/gsd-power-manager.c @@ -1,7 +1,7 @@ @@ -557,7 +557,7 @@ * Copyright (C) 2011 Ritesh Khadgaray <[email protected]> * * This program is free software; you can redistribute it and/or modify -@@ -31,6 +31,7 @@ +@@ -32,6 +32,7 @@ #include <libupower-glib/upower.h> #include <libnotify/notify.h> #include <canberra-gtk.h> @@ -565,7 +565,7 @@ #define GNOME_DESKTOP_USE_UNSTABLE_API #include <libgnome-desktop/gnome-rr.h> -@@ -42,7 +43,6 @@ +@@ -43,7 +44,6 @@ #include "gnome-settings-session.h" #include "gsd-enums.h" #include "gsd-power-manager.h" @@ -573,7 +573,7 @@ #define GNOME_SESSION_DBUS_NAME "org.gnome.SessionManager" #define GNOME_SESSION_DBUS_PATH "/org/gnome/SessionManager" -@@ -77,6 +77,10 @@ +@@ -78,6 +78,10 @@ #define GSD_POWER_MANAGER_RECALL_DELAY 30 /* seconds */ #define GSD_POWER_MANAGER_LID_CLOSE_SAFETY_TIMEOUT 30 /* seconds */ @@ -584,7 +584,7 @@ /* Keep this in sync with gnome-shell */ #define SCREENSAVER_FADE_TIME 10 /* seconds */ -@@ -190,13 +194,19 @@ struct GsdPowerManagerPrivate +@@ -193,14 +197,20 @@ struct GsdPowerManagerPrivate ca_context *canberra_context; ca_proplist *critical_alert_loop_props; guint32 critical_alert_timeout_id; @@ -595,6 +595,7 @@ GsdPowerIdleMode current_idle_mode; - guint lid_close_safety_timer_id; GtkStatusIcon *status_icon; + guint xscreensaver_watchdog_timer_id; + + /* systemd stuff */ + GDBusProxy *logind_proxy; @@ -606,7 +607,7 @@ }; enum { -@@ -213,8 +223,8 @@ static GIcon *engine_get_icon (GsdPowerManager *manager); +@@ -217,8 +227,8 @@ static GIcon *engine_get_icon (GsdPowerManager *manager); static gchar *engine_get_summary (GsdPowerManager *manager); static void do_power_action_type (GsdPowerManager *manager, GsdPowerActionType action_type); static void do_lid_closed_action (GsdPowerManager *manager); @@ -617,7 +618,7 @@ G_DEFINE_TYPE (GsdPowerManager, gsd_power_manager, G_TYPE_OBJECT) -@@ -2044,6 +2054,57 @@ gnome_session_shutdown (void) +@@ -2048,6 +2058,57 @@ gnome_session_shutdown (void) } static void @@ -675,7 +676,7 @@ do_power_action_type (GsdPowerManager *manager, GsdPowerActionType action_type) { -@@ -2052,19 +2113,19 @@ do_power_action_type (GsdPowerManager *manager, +@@ -2056,19 +2117,19 @@ do_power_action_type (GsdPowerManager *manager, switch (action_type) { case GSD_POWER_ACTION_SUSPEND: @@ -698,7 +699,7 @@ break; case GSD_POWER_ACTION_BLANK: ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen, -@@ -2136,85 +2197,20 @@ upower_kbd_toggle (GsdPowerManager *manager, +@@ -2140,85 +2201,20 @@ upower_kbd_toggle (GsdPowerManager *manager, return ret; } @@ -794,7 +795,7 @@ } /* Sets up a timer to be triggered some seconds after closing the laptop lid -@@ -2222,82 +2218,73 @@ lid_close_safety_timer_cb (GsdPowerManager *manager) +@@ -2226,82 +2222,73 @@ lid_close_safety_timer_cb (GsdPowerManager *manager) * again in the timeout handler to see if we can suspend then. */ static void @@ -910,7 +911,7 @@ /* play a sound, using sounds from the naming spec */ ca_context_play (manager->priv->canberra_context, 0, CA_PROP_EVENT_ID, "lid-close", -@@ -2305,21 +2292,22 @@ do_lid_closed_action (GsdPowerManager *manager) +@@ -2309,21 +2296,22 @@ do_lid_closed_action (GsdPowerManager *manager) CA_PROP_EVENT_DESCRIPTION, _("Lid has been closed"), NULL); @@ -943,7 +944,7 @@ static void up_client_changed_cb (UpClient *client, GsdPowerManager *manager) { -@@ -2339,6 +2327,7 @@ up_client_changed_cb (UpClient *client, GsdPowerManager *manager) +@@ -2343,6 +2331,7 @@ up_client_changed_cb (UpClient *client, GsdPowerManager *manager) if (manager->priv->lid_is_closed == tmp) return; manager->priv->lid_is_closed = tmp; @@ -951,7 +952,7 @@ /* fake a keypress */ if (tmp) -@@ -3290,30 +3279,6 @@ gsd_power_manager_class_init (GsdPowerManagerClass *klass) +@@ -3294,30 +3283,6 @@ gsd_power_manager_class_init (GsdPowerManagerClass *klass) } static void @@ -982,7 +983,7 @@ idle_dbus_signal_cb (GDBusProxy *proxy, const gchar *sender_name, const gchar *signal_name, -@@ -3465,75 +3430,38 @@ out: +@@ -3469,75 +3434,38 @@ out: } static void @@ -1082,8 +1083,8 @@ } static void -@@ -3621,6 +3549,287 @@ engine_session_active_changed_cb (GnomeSettingsSession *session, - idle_set_mode (manager, GSD_POWER_IDLE_MODE_NORMAL); +@@ -3696,6 +3624,287 @@ disable_builtin_screensaver (gpointer unused) + return TRUE; } +static void @@ -1370,7 +1371,7 @@ gboolean gsd_power_manager_start (GsdPowerManager *manager, GError **error) -@@ -3630,6 +3839,25 @@ gsd_power_manager_start (GsdPowerManager *manager, +@@ -3705,6 +3914,25 @@ gsd_power_manager_start (GsdPowerManager *manager, g_debug ("Starting power manager"); gnome_settings_profile_start (NULL); @@ -1396,7 +1397,7 @@ /* track the active session */ manager->priv->session = gnome_settings_session_new (); g_signal_connect (manager->priv->session, "notify::state", -@@ -3644,10 +3872,6 @@ gsd_power_manager_start (GsdPowerManager *manager, +@@ -3719,10 +3947,6 @@ gsd_power_manager_start (GsdPowerManager *manager, G_CALLBACK (engine_settings_key_changed_cb), manager); manager->priv->settings_screensaver = g_settings_new ("org.gnome.desktop.screensaver"); manager->priv->up_client = up_client_new (); @@ -1407,7 +1408,7 @@ manager->priv->lid_is_closed = up_client_get_lid_is_closed (manager->priv->up_client); g_signal_connect (manager->priv->up_client, "device-added", G_CALLBACK (engine_device_added_cb), manager); -@@ -3761,6 +3985,9 @@ gsd_power_manager_start (GsdPowerManager *manager, +@@ -3836,6 +4060,9 @@ gsd_power_manager_start (GsdPowerManager *manager, manager->priv->x11_screen = gnome_rr_screen_new (gdk_screen_get_default (), error); if (manager->priv->x11_screen == NULL) return FALSE; @@ -1417,7 +1418,7 @@ /* ensure the default dpms timeouts are cleared */ ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen, -@@ -3787,6 +4014,11 @@ gsd_power_manager_stop (GsdPowerManager *manager) +@@ -3865,6 +4092,11 @@ gsd_power_manager_stop (GsdPowerManager *manager) { g_debug ("Stopping power manager"); @@ -1429,7 +1430,7 @@ if (manager->priv->bus_cancellable != NULL) { g_cancellable_cancel (manager->priv->bus_cancellable); g_object_unref (manager->priv->bus_cancellable); -@@ -3798,8 +4030,6 @@ gsd_power_manager_stop (GsdPowerManager *manager) +@@ -3876,8 +4108,6 @@ gsd_power_manager_stop (GsdPowerManager *manager) manager->priv->introspection_data = NULL; } @@ -1438,7 +1439,7 @@ g_signal_handlers_disconnect_by_data (manager->priv->up_client, manager); g_clear_object (&manager->priv->connection); -@@ -3807,6 +4037,19 @@ gsd_power_manager_stop (GsdPowerManager *manager) +@@ -3885,6 +4115,19 @@ gsd_power_manager_stop (GsdPowerManager *manager) g_clear_object (&manager->priv->settings); g_clear_object (&manager->priv->settings_screensaver); g_clear_object (&manager->priv->up_client); @@ -1458,7 +1459,7 @@ g_clear_object (&manager->priv->x11_screen); g_ptr_array_unref (manager->priv->devices_array); -@@ -3835,6 +4078,8 @@ static void +@@ -3918,6 +4161,8 @@ static void gsd_power_manager_init (GsdPowerManager *manager) { manager->priv = GSD_POWER_MANAGER_GET_PRIVATE (manager); @@ -1468,5 +1469,5 @@ static void -- -1.7.12.1 +1.7.12.2 Modified: PKGBUILD =================================================================== --- PKGBUILD 2012-10-18 19:49:22 UTC (rev 169289) +++ PKGBUILD 2012-10-18 21:39:23 UTC (rev 169290) @@ -3,7 +3,7 @@ pkgname=gnome-settings-daemon pkgver=3.6.1 -pkgrel=1 +pkgrel=2 pkgdesc="The GNOME Settings daemon" arch=('i686' 'x86_64') license=('GPL') @@ -15,14 +15,20 @@ url="http://www.gnome.org" groups=('gnome') source=(http://ftp.gnome.org/pub/gnome/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz + screensaver.patch 0001-power-and-media-keys-Use-logind-for-suspending-and-r.patch) sha256sums=('1fe96e0709d7c618d90cc1bfcddc46eede3c2cdb305f5e7f4cb388d43dd5526a' - '3b72ba86321446e92a6fe32167ebd5edbdd66ab1f7d1eda8a7a3edf5c6d5e1eb') + 'd2c32fa0262e4d0e97fc07fb631ad2627b4f2ae273e2cb3028236d9725711880' + 'f23db348593f58da755889928d7fa75817479d9ad5be67cc7a2f8cbc5db23632') build() { cd $pkgname-$pkgver - # logind key handling FS#31801, patches from Fedora + # Disable X's built-in screensaver + patch -Np1 -i ../screensaver.patch + + # logind key handling FS#31801, patch from Fedora + # rebased onto screensaver.patch patch -Np1 -i ../0001-power-and-media-keys-Use-logind-for-suspending-and-r.patch aclocal automake Added: screensaver.patch =================================================================== --- screensaver.patch (rev 0) +++ screensaver.patch 2012-10-18 21:39:23 UTC (rev 169290) @@ -0,0 +1,145 @@ +From b47e4019a12ac84fba31e1c631d878ce03fa3808 Mon Sep 17 00:00:00 2001 +From: Rui Matos <[email protected]> +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 +--- +diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c +index 0e06495..070cf32 100644 +--- a/plugins/power/gsd-power-manager.c ++++ b/plugins/power/gsd-power-manager.c +@@ -27,6 +27,7 @@ + #include <stdio.h> + #include <sys/wait.h> + #include <glib/gi18n.h> ++#include <gdk/gdkx.h> + #include <gtk/gtk.h> + #include <libupower-glib/upower.h> + #include <libnotify/notify.h> +@@ -80,6 +81,8 @@ + /* Keep this in sync with gnome-shell */ + #define SCREENSAVER_FADE_TIME 10 /* seconds */ + ++#define XSCREENSAVER_WATCHDOG_TIMEOUT 120 /* seconds */ ++ + enum { + GSD_POWER_IDLETIME_NULL_ID, + GSD_POWER_IDLETIME_DIM_ID, +@@ -197,6 +200,7 @@ struct GsdPowerManagerPrivate + GsdPowerIdleMode current_idle_mode; + guint lid_close_safety_timer_id; + GtkStatusIcon *status_icon; ++ guint xscreensaver_watchdog_timer_id; + }; + + enum { +@@ -3621,6 +3625,77 @@ engine_session_active_changed_cb (GnomeSettingsSession *session, + 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) +@@ -3778,6 +3853,9 @@ gsd_power_manager_start (GsdPowerManager *manager, + /* 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; + } +@@ -3829,6 +3907,11 @@ gsd_power_manager_stop (GsdPowerManager *manager) + + g_clear_object (&manager->priv->idletime); + g_clear_object (&manager->priv->status_icon); ++ ++ 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 +-- +cgit v0.9.0.2
