[arch-commits] Commit in gnome-settings-daemon/trunk (3 files)

Jan Steffens heftig at archlinux.org
Thu Oct 18 21:39:24 UTC 2012


    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 <richard at hughsie.com>
 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 <khadgaray at gmail.com>
   *
   * 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 <tiagomatos at gmail.com>
+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 ()),
++                         &current_server_timeout,
++                         &current_server_interval,
++                         &current_prefer_blank,
++                         &current_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




More information about the arch-commits mailing list