diff --git a/gnome-settings-daemon-3.6.3.tar.xz b/gnome-settings-daemon-3.6.3.tar.xz deleted file mode 100644 index 92c80a4..0000000 --- a/gnome-settings-daemon-3.6.3.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:606aaaba9cc7f51035702aead46c8bb595917a09cb947b396a579ea443328cdc -size 1492024 diff --git a/gnome-settings-daemon-3.8.0.tar.xz b/gnome-settings-daemon-3.8.0.tar.xz new file mode 100644 index 0000000..2b677b9 --- /dev/null +++ b/gnome-settings-daemon-3.8.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dff9e725a34158558836843e17079f602522bc30f05acf96cb2712eb4544c9ea +size 1586548 diff --git a/gnome-settings-daemon-bnc462640-mute-action.patch b/gnome-settings-daemon-bnc462640-mute-action.patch index cb1dbac..d80d117 100644 --- a/gnome-settings-daemon-bnc462640-mute-action.patch +++ b/gnome-settings-daemon-bnc462640-mute-action.patch @@ -2,7 +2,7 @@ Index: plugins/media-keys/gsd-media-keys-manager.c =================================================================== --- plugins/media-keys/gsd-media-keys-manager.c.orig +++ plugins/media-keys/gsd-media-keys-manager.c -@@ -1070,6 +1070,7 @@ do_sound_action (GsdMediaKeysManager *ma +@@ -1187,6 +1187,7 @@ do_sound_action (GsdMediaKeysManager *ma { GvcMixerStream *stream; gboolean old_muted, new_muted; @@ -10,7 +10,7 @@ Index: plugins/media-keys/gsd-media-keys-manager.c guint old_vol, new_vol, norm_vol_step; gboolean sound_changed; -@@ -1091,7 +1092,11 @@ do_sound_action (GsdMediaKeysManager *ma +@@ -1215,7 +1216,11 @@ do_sound_action (GsdMediaKeysManager *ma switch (type) { case MUTE_KEY: @@ -27,7 +27,7 @@ Index: data/gnome-settings-daemon.convert =================================================================== --- data/gnome-settings-daemon.convert.orig +++ data/gnome-settings-daemon.convert -@@ -61,6 +61,7 @@ volume-down = /apps/gnome_settings_daemo +@@ -57,6 +57,7 @@ volume-down = /apps/gnome_settings_daemo volume-mute = /apps/gnome_settings_daemon/keybindings/volume_mute volume-up = /apps/gnome_settings_daemon/keybindings/volume_up www = /apps/gnome_settings_daemon/keybindings/www @@ -39,9 +39,9 @@ Index: data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in.in =================================================================== --- data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in.in.orig +++ data/org.gnome.settings-daemon.plugins.media-keys.gschema.xml.in.in -@@ -185,6 +185,11 @@ - <_summary>Switch input source backward - <_description>Binding to select the previous input source +@@ -175,6 +175,11 @@ + <_summary>Magnifier zoom out + <_description>Binding for the magnifier to zoom out + + true diff --git a/gnome-settings-daemon-double-suspend.patch b/gnome-settings-daemon-double-suspend.patch deleted file mode 100644 index ba0faac..0000000 --- a/gnome-settings-daemon-double-suspend.patch +++ /dev/null @@ -1,1468 +0,0 @@ -From 6defe42c31b18ad8dbb2fff3869b0fccbd821e97 Mon Sep 17 00:00:00 2001 -From: Richard Hughes -Date: Fri, 21 Sep 2012 11:56:53 +0100 -Subject: [PATCH] power and media-keys: Use logind for suspending and - rebooting the system - -Use the new logind features to suspend and resume but making sure we opt out -of logind handling the sleep and power keys, and also inhibiting for lid close -auto-suspend if there is an external monitor connected. - -Also use a delay inihibit for logind so that we can do actions on suspend like -blanking the screen using the screensaver and also poking the screensaver on -resume. - -https://bugzilla.gnome.org/show_bug.cgi?id=680689 ---- - plugins/common/Makefile.am | 4 +- - plugins/common/gsd-power-helper.c | 203 -------- - plugins/common/gsd-power-helper.h | 35 -- - plugins/media-keys/gsd-media-keys-manager.c | 156 +++++-- - plugins/power/gsd-power-manager.c | 697 +++++++++++++++++++--------- - 5 files changed, 594 insertions(+), 501 deletions(-) - delete mode 100644 plugins/common/gsd-power-helper.c - delete mode 100644 plugins/common/gsd-power-helper.h - -Index: gnome-settings-daemon-3.6.3/plugins/common/Makefile.am -=================================================================== ---- gnome-settings-daemon-3.6.3.orig/plugins/common/Makefile.am -+++ gnome-settings-daemon-3.6.3/plugins/common/Makefile.am -@@ -6,9 +6,7 @@ libcommon_la_SOURCES = \ - gsd-keygrab.c \ - gsd-keygrab.h \ - gsd-input-helper.c \ -- gsd-input-helper.h \ -- gsd-power-helper.c \ -- gsd-power-helper.h -+ gsd-input-helper.h - - libcommon_la_CPPFLAGS = \ - $(AM_CPPFLAGS) -Index: gnome-settings-daemon-3.6.3/plugins/common/gsd-power-helper.c -=================================================================== ---- gnome-settings-daemon-3.6.3.orig/plugins/common/gsd-power-helper.c -+++ /dev/null -@@ -1,203 +0,0 @@ --/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- -- * -- * Copyright (C) 2012 Bastien Nocera -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * You should have received a copy of the GNU General Public License -- * along with this program; if not, write to the Free Software -- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -- * -- */ -- --#include "config.h" -- --#include "gsd-power-helper.h" -- --#define SYSTEMD_DBUS_NAME "org.freedesktop.login1" --#define SYSTEMD_DBUS_PATH "/org/freedesktop/login1" --#define SYSTEMD_DBUS_INTERFACE "org.freedesktop.login1.Manager" -- --#define CONSOLEKIT_DBUS_NAME "org.freedesktop.ConsoleKit" --#define CONSOLEKIT_DBUS_PATH_MANAGER "/org/freedesktop/ConsoleKit/Manager" --#define CONSOLEKIT_DBUS_INTERFACE_MANAGER "org.freedesktop.ConsoleKit.Manager" -- --#ifdef HAVE_SYSTEMD --static void --systemd_stop (void) --{ -- GDBusConnection *bus; -- -- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL); -- g_dbus_connection_call (bus, -- SYSTEMD_DBUS_NAME, -- SYSTEMD_DBUS_PATH, -- SYSTEMD_DBUS_INTERFACE, -- "PowerOff", -- g_variant_new ("(b)", FALSE), -- NULL, 0, G_MAXINT, NULL, NULL, NULL); -- g_object_unref (bus); --} -- --static void --systemd_suspend (void) --{ -- GDBusConnection *bus; -- -- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL); -- g_dbus_connection_call (bus, -- SYSTEMD_DBUS_NAME, -- SYSTEMD_DBUS_PATH, -- SYSTEMD_DBUS_INTERFACE, -- "Suspend", -- g_variant_new ("(b)", TRUE), -- NULL, 0, G_MAXINT, NULL, NULL, NULL); -- g_object_unref (bus); --} -- --static void --systemd_hibernate (void) --{ -- GDBusConnection *bus; -- -- bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL); -- g_dbus_connection_call (bus, -- SYSTEMD_DBUS_NAME, -- SYSTEMD_DBUS_PATH, -- SYSTEMD_DBUS_INTERFACE, -- "Hibernate", -- g_variant_new ("(b)", TRUE), -- NULL, 0, G_MAXINT, NULL, NULL, NULL); -- g_object_unref (bus); --} -- --#else /* HAVE_SYSTEMD */ -- --static void --consolekit_stop_cb (GObject *source_object, -- GAsyncResult *res, -- gpointer user_data) --{ -- GVariant *result; -- GError *error = NULL; -- -- result = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object), -- res, -- &error); -- if (result == NULL) { -- g_warning ("couldn't stop using ConsoleKit: %s", -- error->message); -- g_error_free (error); -- } else { -- g_variant_unref (result); -- } --} -- --static void --consolekit_stop (void) --{ -- GError *error = NULL; -- GDBusProxy *proxy; -- -- /* power down the machine in a safe way */ -- proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, -- G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, -- NULL, -- CONSOLEKIT_DBUS_NAME, -- CONSOLEKIT_DBUS_PATH_MANAGER, -- CONSOLEKIT_DBUS_INTERFACE_MANAGER, -- NULL, &error); -- if (proxy == NULL) { -- g_warning ("cannot connect to ConsoleKit: %s", -- error->message); -- g_error_free (error); -- return; -- } -- g_dbus_proxy_call (proxy, -- "Stop", -- NULL, -- G_DBUS_CALL_FLAGS_NONE, -- -1, NULL, -- consolekit_stop_cb, NULL); -- g_object_unref (proxy); --} --static void --upower_sleep_cb (GObject *source_object, -- GAsyncResult *res, -- gpointer user_data) --{ -- GVariant *result; -- GError *error = NULL; -- -- result = g_dbus_proxy_call_finish (G_DBUS_PROXY (source_object), -- res, -- &error); -- if (result == NULL) { -- g_warning ("couldn't sleep using UPower: %s", -- error->message); -- g_error_free (error); -- } else { -- g_variant_unref (result); -- } --} -- --static void --upower_suspend (GDBusProxy *upower_proxy) --{ -- g_dbus_proxy_call (upower_proxy, -- "Suspend", -- NULL, -- G_DBUS_CALL_FLAGS_NONE, -- -1, NULL, -- upower_sleep_cb, NULL); --} -- --static void --upower_hibernate (GDBusProxy *upower_proxy) --{ -- g_dbus_proxy_call (upower_proxy, -- "Hibernate", -- NULL, -- G_DBUS_CALL_FLAGS_NONE, -- -1, NULL, -- upower_sleep_cb, NULL); --} --#endif /* HAVE_SYSTEMD */ -- --void --gsd_power_suspend (GDBusProxy *upower_proxy) --{ --#ifdef HAVE_SYSTEMD -- systemd_suspend (); --#else -- upower_suspend (upower_proxy); --#endif --} -- --void --gsd_power_poweroff (void) --{ --#ifdef HAVE_SYSTEMD -- systemd_stop (); --#else -- consolekit_stop (); --#endif --} -- --void --gsd_power_hibernate (GDBusProxy *upower_proxy) --{ --#ifdef HAVE_SYSTEMD -- systemd_hibernate (); --#else -- upower_hibernate (upower_proxy); --#endif --} -Index: gnome-settings-daemon-3.6.3/plugins/common/gsd-power-helper.h -=================================================================== ---- gnome-settings-daemon-3.6.3.orig/plugins/common/gsd-power-helper.h -+++ /dev/null -@@ -1,35 +0,0 @@ --/* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- -- * -- * Copyright (C) 2012 Bastien Nocera -- * -- * This program is free software; you can redistribute it and/or modify -- * it under the terms of the GNU General Public License as published by -- * the Free Software Foundation; either version 2 of the License, or -- * (at your option) any later version. -- * -- * This program is distributed in the hope that it will be useful, -- * but WITHOUT ANY WARRANTY; without even the implied warranty of -- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -- * GNU General Public License for more details. -- * -- * You should have received a copy of the GNU General Public License -- * along with this program; if not, write to the Free Software -- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -- */ -- --#ifndef __GSD_POWER_HELPER_H --#define __GSD_POWER_HELPER_H -- --#include -- --G_BEGIN_DECLS -- --#include -- --void gsd_power_suspend (GDBusProxy *upower_proxy); --void gsd_power_hibernate (GDBusProxy *upower_proxy); --void gsd_power_poweroff (void); -- --G_END_DECLS -- --#endif /* __GSD_POWER_HELPER_H */ -Index: gnome-settings-daemon-3.6.3/plugins/media-keys/gsd-media-keys-manager.c -=================================================================== ---- gnome-settings-daemon-3.6.3.orig/plugins/media-keys/gsd-media-keys-manager.c -+++ gnome-settings-daemon-3.6.3/plugins/media-keys/gsd-media-keys-manager.c -@@ -39,6 +39,7 @@ - #include - #include - #include -+#include - - #ifdef HAVE_GUDEV - #include -@@ -51,7 +52,6 @@ - #include "shortcuts-list.h" - #include "gsd-osd-window.h" - #include "gsd-input-helper.h" --#include "gsd-power-helper.h" - #include "gsd-enums.h" - - #include -@@ -105,6 +105,10 @@ static const gchar introspection_xml[] = - #define KEY_CURRENT_INPUT_SOURCE "current" - #define KEY_INPUT_SOURCES "sources" - -+#define SYSTEMD_DBUS_NAME "org.freedesktop.login1" -+#define SYSTEMD_DBUS_PATH "/org/freedesktop/login1" -+#define SYSTEMD_DBUS_INTERFACE "org.freedesktop.login1.Manager" -+ - #define GSD_MEDIA_KEYS_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_MEDIA_KEYS_MANAGER, GsdMediaKeysManagerPrivate)) - - typedef struct { -@@ -148,10 +152,13 @@ struct GsdMediaKeysManagerPrivate - - /* Power stuff */ - GSettings *power_settings; -- GDBusProxy *upower_proxy; - GDBusProxy *power_screen_proxy; - GDBusProxy *power_keyboard_proxy; - -+ /* systemd stuff */ -+ GDBusProxy *logind_proxy; -+ gint inhibit_keys_fd; -+ - /* Multihead stuff */ - GdkScreen *current_screen; - GSList *screens; -@@ -1623,6 +1630,38 @@ do_toggle_contrast_action (GsdMediaKeysM - } - - static void -+power_action_suspend (GsdMediaKeysManager *manager) -+{ -+#ifndef HAVE_SYSTEMD -+ g_warning ("no systemd support"); -+ return; -+#endif -+ g_dbus_proxy_call (manager->priv->logind_proxy, -+ "Suspend", -+ g_variant_new ("(b)", TRUE), -+ G_DBUS_CALL_FLAGS_NONE, -+ G_MAXINT, -+ manager->priv->bus_cancellable, -+ NULL, NULL); -+} -+ -+static void -+power_action_hibernate (GsdMediaKeysManager *manager) -+{ -+#ifndef HAVE_SYSTEMD -+ g_warning ("no systemd support"); -+ return; -+#endif -+ g_dbus_proxy_call (manager->priv->logind_proxy, -+ "Hibernate", -+ g_variant_new ("(b)", TRUE), -+ G_DBUS_CALL_FLAGS_NONE, -+ G_MAXINT, -+ manager->priv->bus_cancellable, -+ NULL, NULL); -+} -+ -+static void - do_config_power_action (GsdMediaKeysManager *manager, - const gchar *config_key) - { -@@ -1632,14 +1671,14 @@ do_config_power_action (GsdMediaKeysMana - config_key); - switch (action_type) { - case GSD_POWER_ACTION_SUSPEND: -- gsd_power_suspend (manager->priv->upower_proxy); -+ power_action_suspend (manager); - break; - case GSD_POWER_ACTION_INTERACTIVE: - case GSD_POWER_ACTION_SHUTDOWN: - gnome_session_shutdown (manager); - break; - case GSD_POWER_ACTION_HIBERNATE: -- gsd_power_hibernate (manager->priv->upower_proxy); -+ power_action_hibernate (manager); - break; - case GSD_POWER_ACTION_BLANK: - case GSD_POWER_ACTION_NOTHING: -@@ -2253,6 +2292,7 @@ gsd_media_keys_manager_stop (GsdMediaKey - } - #endif /* HAVE_GUDEV */ - -+ g_clear_object (&priv->logind_proxy); - if (priv->settings) { - g_object_unref (priv->settings); - priv->settings = NULL; -@@ -2273,11 +2313,6 @@ gsd_media_keys_manager_stop (GsdMediaKey - priv->power_keyboard_proxy = NULL; - } - -- if (priv->upower_proxy) { -- g_object_unref (priv->upower_proxy); -- priv->upower_proxy = NULL; -- } -- - if (priv->cancellable != NULL) { - g_cancellable_cancel (priv->cancellable); - g_object_unref (priv->cancellable); -@@ -2368,9 +2403,85 @@ gsd_media_keys_manager_class_init (GsdMe - } - - static void -+inhibit_done (GObject *source, -+ GAsyncResult *result, -+ gpointer user_data) -+{ -+ GDBusProxy *proxy = G_DBUS_PROXY (source); -+ GsdMediaKeysManager *manager = GSD_MEDIA_KEYS_MANAGER (user_data); -+ GError *error = NULL; -+ GVariant *res; -+ GUnixFDList *fd_list = NULL; -+ gint idx; -+ -+ res = g_dbus_proxy_call_with_unix_fd_list_finish (proxy, &fd_list, result, &error); -+ if (res == NULL) { -+ g_warning ("Unable to inhibit keypresses: %s", error->message); -+ g_error_free (error); -+ } else { -+ g_variant_get (res, "(h)", &idx); -+ manager->priv->inhibit_keys_fd = g_unix_fd_list_get (fd_list, idx, &error); -+ if (manager->priv->inhibit_keys_fd == -1) { -+ g_warning ("Failed to receive system inhibitor fd: %s", error->message); -+ g_error_free (error); -+ } -+ g_debug ("System inhibitor fd is %d", manager->priv->inhibit_keys_fd); -+ g_object_unref (fd_list); -+ g_variant_unref (res); -+ } -+} -+ -+static void - gsd_media_keys_manager_init (GsdMediaKeysManager *manager) - { -+ GError *error; -+ GDBusConnection *bus; -+ -+ error = NULL; - manager->priv = GSD_MEDIA_KEYS_MANAGER_GET_PRIVATE (manager); -+ -+ bus = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, &error); -+ if (bus == NULL) { -+ g_warning ("Failed to connect to system bus: %s", -+ error->message); -+ g_error_free (error); -+ return; -+ } -+ -+ manager->priv->logind_proxy = -+ g_dbus_proxy_new_sync (bus, -+ 0, -+ NULL, -+ SYSTEMD_DBUS_NAME, -+ SYSTEMD_DBUS_PATH, -+ SYSTEMD_DBUS_INTERFACE, -+ NULL, -+ &error); -+ -+ if (manager->priv->logind_proxy == NULL) { -+ g_warning ("Failed to connect to systemd: %s", -+ error->message); -+ g_error_free (error); -+ } -+ -+ g_object_unref (bus); -+ -+ g_debug ("Adding system inhibitors for power keys"); -+ manager->priv->inhibit_keys_fd = -1; -+ g_dbus_proxy_call_with_unix_fd_list (manager->priv->logind_proxy, -+ "Inhibit", -+ g_variant_new ("(ssss)", -+ "handle-power-key:handle-suspend-key:handle-hibernate-key", -+ g_get_user_name (), -+ "GNOME handling keypresses", -+ "block"), -+ 0, -+ G_MAXINT, -+ NULL, -+ NULL, -+ inhibit_done, -+ manager); -+ - } - - static void -@@ -2387,6 +2498,8 @@ gsd_media_keys_manager_finalize (GObject - - if (media_keys_manager->priv->start_idle_id != 0) - g_source_remove (media_keys_manager->priv->start_idle_id); -+ if (media_keys_manager->priv->inhibit_keys_fd != -1) -+ close (media_keys_manager->priv->inhibit_keys_fd); - - G_OBJECT_CLASS (gsd_media_keys_manager_parent_class)->finalize (object); - } -@@ -2406,21 +2519,6 @@ xrandr_ready_cb (GObject *so - } - - static void --upower_ready_cb (GObject *source_object, -- GAsyncResult *res, -- GsdMediaKeysManager *manager) --{ -- GError *error = NULL; -- -- manager->priv->upower_proxy = g_dbus_proxy_new_finish (res, &error); -- if (manager->priv->upower_proxy == NULL) { -- g_warning ("Failed to get proxy for upower: %s", -- error->message); -- g_error_free (error); -- } --} -- --static void - power_screen_ready_cb (GObject *source_object, - GAsyncResult *res, - GsdMediaKeysManager *manager) -@@ -2522,16 +2620,6 @@ register_manager (GsdMediaKeysManager *m - manager->priv->bus_cancellable, - (GAsyncReadyCallback) on_bus_gotten, - manager); -- -- g_dbus_proxy_new_for_bus (G_BUS_TYPE_SYSTEM, -- G_DBUS_PROXY_FLAGS_NONE, -- NULL, -- "org.freedesktop.UPower", -- "/org/freedesktop/UPower", -- "org.freedesktop.UPower", -- NULL, -- (GAsyncReadyCallback) upower_ready_cb, -- manager); - } - - GsdMediaKeysManager * -Index: gnome-settings-daemon-3.6.3/plugins/power/gsd-power-manager.c -=================================================================== ---- gnome-settings-daemon-3.6.3.orig/plugins/power/gsd-power-manager.c -+++ gnome-settings-daemon-3.6.3/plugins/power/gsd-power-manager.c -@@ -1,7 +1,7 @@ - /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- - * - * Copyright (C) 2007 William Jon McCann -- * Copyright (C) 2011 Richard Hughes -+ * Copyright (C) 2011-2012 Richard Hughes - * Copyright (C) 2011 Ritesh Khadgaray - * - * This program is free software; you can redistribute it and/or modify -@@ -32,6 +32,7 @@ - #include - #include - #include -+#include - - #define GNOME_DESKTOP_USE_UNSTABLE_API - #include -@@ -43,7 +44,6 @@ - #include "gnome-settings-session.h" - #include "gsd-enums.h" - #include "gsd-power-manager.h" --#include "gsd-power-helper.h" - - #define GNOME_SESSION_DBUS_NAME "org.gnome.SessionManager" - #define GNOME_SESSION_DBUS_PATH "/org/gnome/SessionManager" -@@ -78,6 +78,10 @@ - #define GSD_POWER_MANAGER_RECALL_DELAY 30 /* seconds */ - #define GSD_POWER_MANAGER_LID_CLOSE_SAFETY_TIMEOUT 30 /* seconds */ - -+#define SYSTEMD_DBUS_NAME "org.freedesktop.login1" -+#define SYSTEMD_DBUS_PATH "/org/freedesktop/login1" -+#define SYSTEMD_DBUS_INTERFACE "org.freedesktop.login1.Manager" -+ - /* Keep this in sync with gnome-shell */ - #define SCREENSAVER_FADE_TIME 10 /* seconds */ - -@@ -193,15 +197,21 @@ struct GsdPowerManagerPrivate - ca_context *canberra_context; - ca_proplist *critical_alert_loop_props; - guint32 critical_alert_timeout_id; -- GDBusProxy *screensaver_proxy; - GDBusProxy *session_proxy; - GDBusProxy *session_presence_proxy; - GpmIdletime *idletime; - GsdPowerIdleMode current_idle_mode; -- guint lid_close_safety_timer_id; - GtkStatusIcon *status_icon; - guint xscreensaver_watchdog_timer_id; - gboolean is_virtual_machine; -+ -+ /* systemd stuff */ -+ GDBusProxy *logind_proxy; -+ gint inhibit_lid_switch_fd; -+ gboolean inhibit_lid_switch_taken; -+ gint inhibit_suspend_fd; -+ gboolean inhibit_suspend_taken; -+ guint inhibit_lid_switch_timer_id; - }; - - enum { -@@ -218,8 +228,8 @@ static GIcon *engine_get_icon (GsdPow - 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); --static void lock_screensaver (GsdPowerManager *manager); --static void kill_lid_close_safety_timer (GsdPowerManager *manager); -+static void uninhibit_lid_switch (GsdPowerManager *manager); -+static gboolean external_monitor_is_connected (GnomeRRScreen *screen); - - G_DEFINE_TYPE (GsdPowerManager, gsd_power_manager, G_TYPE_OBJECT) - -@@ -2049,6 +2059,57 @@ gnome_session_shutdown (void) - } - - static void -+action_poweroff (GsdPowerManager *manager) -+{ -+ if (manager->priv->logind_proxy == NULL) { -+ g_warning ("no systemd support"); -+ return; -+ } -+ g_dbus_proxy_call (manager->priv->logind_proxy, -+ "PowerOff", -+ g_variant_new ("(b)", FALSE), -+ G_DBUS_CALL_FLAGS_NONE, -+ G_MAXINT, -+ NULL, -+ NULL, -+ NULL); -+} -+ -+static void -+action_suspend (GsdPowerManager *manager) -+{ -+ if (manager->priv->logind_proxy == NULL) { -+ g_warning ("no systemd support"); -+ return; -+ } -+ g_dbus_proxy_call (manager->priv->logind_proxy, -+ "Suspend", -+ g_variant_new ("(b)", FALSE), -+ G_DBUS_CALL_FLAGS_NONE, -+ G_MAXINT, -+ NULL, -+ NULL, -+ NULL); -+} -+ -+static void -+action_hibernate (GsdPowerManager *manager) -+{ -+ if (manager->priv->logind_proxy == NULL) { -+ g_warning ("no systemd support"); -+ return; -+ } -+ g_dbus_proxy_call (manager->priv->logind_proxy, -+ "Hibernate", -+ g_variant_new ("(b)", FALSE), -+ G_DBUS_CALL_FLAGS_NONE, -+ G_MAXINT, -+ NULL, -+ NULL, -+ NULL); -+} -+ -+static void - do_power_action_type (GsdPowerManager *manager, - GsdPowerActionType action_type) - { -@@ -2057,19 +2118,19 @@ do_power_action_type (GsdPowerManager *m - - switch (action_type) { - case GSD_POWER_ACTION_SUSPEND: -- gsd_power_suspend (manager->priv->upower_proxy); -+ action_suspend (manager); - break; - case GSD_POWER_ACTION_INTERACTIVE: - gnome_session_shutdown (); - break; - case GSD_POWER_ACTION_HIBERNATE: -- gsd_power_hibernate (manager->priv->upower_proxy); -+ action_hibernate (manager); - break; - case GSD_POWER_ACTION_SHUTDOWN: - /* this is only used on critically low battery where - * hibernate is not available and is marginally better - * than just powering down the computer mid-write */ -- gsd_power_poweroff (); -+ action_poweroff (manager); - break; - case GSD_POWER_ACTION_BLANK: - ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen, -@@ -2141,85 +2202,20 @@ upower_kbd_toggle (GsdPowerManager *mana - return ret; - } - --static void --do_lid_open_action (GsdPowerManager *manager) --{ -- gboolean ret; -- GError *error = NULL; -- -- /* play a sound, using sounds from the naming spec */ -- ca_context_play (manager->priv->canberra_context, 0, -- CA_PROP_EVENT_ID, "lid-open", -- /* TRANSLATORS: this is the sound description */ -- CA_PROP_EVENT_DESCRIPTION, _("Lid has been opened"), -- NULL); -- -- /* ensure we turn the panel back on after lid open */ -- ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen, -- GNOME_RR_DPMS_ON, -- &error); -- if (!ret) { -- g_warning ("failed to turn the panel on after lid open: %s", -- error->message); -- g_clear_error (&error); -- } -- -- /* only toggle keyboard if present and already toggled off */ -- if (manager->priv->upower_kdb_proxy != NULL && -- manager->priv->kbd_brightness_old != -1) { -- ret = upower_kbd_toggle (manager, &error); -- if (!ret) { -- g_warning ("failed to turn the kbd backlight on: %s", -- error->message); -- g_error_free (error); -- } -- } -- -- kill_lid_close_safety_timer (manager); --} -- - static gboolean --is_on (GnomeRROutput *output) -+inhibit_lid_switch_timer_cb (GsdPowerManager *manager) - { -- GnomeRRCrtc *crtc; -- -- crtc = gnome_rr_output_get_crtc (output); -- if (!crtc) -- return FALSE; -- return gnome_rr_crtc_get_current_mode (crtc) != NULL; --} -- --static gboolean --non_laptop_outputs_are_all_off (GnomeRRScreen *screen) --{ -- GnomeRROutput **outputs; -- int i; -- -- outputs = gnome_rr_screen_list_outputs (screen); -- for (i = 0; outputs[i] != NULL; i++) { -- if (gnome_rr_output_is_laptop (outputs[i])) -- continue; -- -- if (is_on (outputs[i])) -- return FALSE; -+ if (!external_monitor_is_connected (manager->priv->x11_screen) || -+ g_settings_get_boolean (manager->priv->settings, -+ "lid-close-suspend-with-external-monitor")) { -+ g_debug ("no external monitors for a while; uninhibiting lid close"); -+ uninhibit_lid_switch (manager); -+ manager->priv->inhibit_lid_switch_timer_id = 0; -+ return G_SOURCE_REMOVE; - } - -- return TRUE; --} -- --/* Timeout callback used to check conditions when the laptop's lid is closed but -- * the machine is not suspended yet. We try to suspend again, so that the laptop -- * won't overheat if placed in a backpack. -- */ --static gboolean --lid_close_safety_timer_cb (GsdPowerManager *manager) --{ -- manager->priv->lid_close_safety_timer_id = 0; -- -- g_debug ("lid has been closed for a while; trying to suspend again"); -- do_lid_closed_action (manager); -- -- return FALSE; -+ g_debug ("external monitor still there; trying again later"); -+ return G_SOURCE_CONTINUE; - } - - /* Sets up a timer to be triggered some seconds after closing the laptop lid -@@ -2227,82 +2223,73 @@ lid_close_safety_timer_cb (GsdPowerManag - * again in the timeout handler to see if we can suspend then. - */ - static void --setup_lid_close_safety_timer (GsdPowerManager *manager) -+setup_inhibit_lid_switch_timer (GsdPowerManager *manager) - { -- if (manager->priv->lid_close_safety_timer_id != 0) -+ if (manager->priv->inhibit_lid_switch_timer_id != 0) { -+ g_debug ("lid close safety timer already set up"); - return; -+ } -+ -+ g_debug ("setting up lid close safety timer"); - -- manager->priv->lid_close_safety_timer_id = g_timeout_add_seconds (GSD_POWER_MANAGER_LID_CLOSE_SAFETY_TIMEOUT, -- (GSourceFunc) lid_close_safety_timer_cb, -+ manager->priv->inhibit_lid_switch_timer_id = g_timeout_add_seconds (GSD_POWER_MANAGER_LID_CLOSE_SAFETY_TIMEOUT, -+ (GSourceFunc) inhibit_lid_switch_timer_cb, - manager); -- g_source_set_name_by_id (manager->priv->lid_close_safety_timer_id, "[GsdPowerManager] lid close safety timer"); -+ g_source_set_name_by_id (manager->priv->inhibit_lid_switch_timer_id, "[GsdPowerManager] lid close safety timer"); - } - - static void --kill_lid_close_safety_timer (GsdPowerManager *manager) -+restart_inhibit_lid_switch_timer (GsdPowerManager *manager) - { -- if (manager->priv->lid_close_safety_timer_id != 0) { -- g_source_remove (manager->priv->lid_close_safety_timer_id); -- manager->priv->lid_close_safety_timer_id = 0; -+ if (manager->priv->inhibit_lid_switch_timer_id != 0) { -+ g_debug ("restarting lid close safety timer"); -+ g_source_remove (manager->priv->inhibit_lid_switch_timer_id); -+ manager->priv->inhibit_lid_switch_timer_id = 0; -+ setup_inhibit_lid_switch_timer (manager); - } - } - - static void --suspend_with_lid_closed (GsdPowerManager *manager) -+do_lid_open_action (GsdPowerManager *manager) - { - gboolean ret; - GError *error = NULL; -- GsdPowerActionType action_type; - -- /* maybe lock the screen if the lid is closed */ -- lock_screensaver (manager); -- -- /* we have different settings depending on AC state */ -- if (up_client_get_on_battery (manager->priv->up_client)) { -- action_type = g_settings_get_enum (manager->priv->settings, -- "lid-close-battery-action"); -- } else { -- action_type = g_settings_get_enum (manager->priv->settings, -- "lid-close-ac-action"); -- } -- -- /* check we won't melt when the lid is closed */ -- if (action_type != GSD_POWER_ACTION_SUSPEND && -- action_type != GSD_POWER_ACTION_HIBERNATE) { -- if (up_client_get_lid_force_sleep (manager->priv->up_client)) { -- g_warning ("to prevent damage, now forcing suspend"); -- do_power_action_type (manager, GSD_POWER_ACTION_SUSPEND); -- return; -- } -- } -+ /* play a sound, using sounds from the naming spec */ -+ ca_context_play (manager->priv->canberra_context, 0, -+ CA_PROP_EVENT_ID, "lid-open", -+ /* TRANSLATORS: this is the sound description */ -+ CA_PROP_EVENT_DESCRIPTION, _("Lid has been opened"), -+ NULL); - -- /* ensure we turn the panel back on after resume */ -+ /* ensure we turn the panel back on after lid open */ - ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen, -- GNOME_RR_DPMS_OFF, -+ GNOME_RR_DPMS_ON, - &error); - if (!ret) { -- g_warning ("failed to turn the panel off after lid close: %s", -+ g_warning ("failed to turn the panel on after lid open: %s", - error->message); - g_clear_error (&error); - } - -- /* only toggle keyboard if present and not already toggled */ -- if (manager->priv->upower_kdb_proxy && -- manager->priv->kbd_brightness_old == -1) { -+ /* only toggle keyboard if present and already toggled off */ -+ if (manager->priv->upower_kdb_proxy != NULL && -+ manager->priv->kbd_brightness_old != -1) { - ret = upower_kbd_toggle (manager, &error); - if (!ret) { -- g_warning ("failed to turn the kbd backlight off: %s", -+ g_warning ("failed to turn the kbd backlight on: %s", - error->message); - g_error_free (error); - } - } -- -- do_power_action_type (manager, action_type); - } - - static void - do_lid_closed_action (GsdPowerManager *manager) - { -+ gboolean ret; -+ GError *error = NULL; -+ - /* play a sound, using sounds from the naming spec */ - ca_context_play (manager->priv->canberra_context, 0, - CA_PROP_EVENT_ID, "lid-close", -@@ -2310,21 +2297,22 @@ do_lid_closed_action (GsdPowerManager *m - CA_PROP_EVENT_DESCRIPTION, _("Lid has been closed"), - NULL); - -+ /* turn the panel off if the lid is closed (mainly for Dells...) */ -+ ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen, -+ GNOME_RR_DPMS_OFF, -+ &error); -+ if (!ret) { -+ g_warning ("failed to turn the panel off after lid close: %s", -+ error->message); -+ g_error_free (error); -+ } -+ - /* refresh RANDR so we get an accurate view of what monitors are plugged in when the lid is closed */ - gnome_rr_screen_refresh (manager->priv->x11_screen, NULL); /* NULL-GError */ - -- /* perform policy action */ -- if (g_settings_get_boolean (manager->priv->settings, "lid-close-suspend-with-external-monitor") -- || non_laptop_outputs_are_all_off (manager->priv->x11_screen)) { -- g_debug ("lid is closed; suspending or hibernating"); -- suspend_with_lid_closed (manager); -- } else { -- g_debug ("lid is closed; not suspending nor hibernating since some external monitor outputs are still active"); -- setup_lid_close_safety_timer (manager); -- } -+ restart_inhibit_lid_switch_timer (manager); - } - -- - static void - up_client_changed_cb (UpClient *client, GsdPowerManager *manager) - { -@@ -2344,6 +2332,7 @@ up_client_changed_cb (UpClient *client, - if (manager->priv->lid_is_closed == tmp) - return; - manager->priv->lid_is_closed = tmp; -+ g_debug ("up changed: lid is now %s", tmp ? "closed" : "open"); - - /* fake a keypress */ - if (tmp) -@@ -3302,30 +3291,6 @@ gsd_power_manager_class_init (GsdPowerMa - } - - static void --sleep_cb_screensaver_proxy_ready_cb (GObject *source_object, -- GAsyncResult *res, -- gpointer user_data) --{ -- GError *error = NULL; -- GsdPowerManager *manager = GSD_POWER_MANAGER (user_data); -- -- manager->priv->screensaver_proxy = g_dbus_proxy_new_for_bus_finish (res, &error); -- if (manager->priv->screensaver_proxy == NULL) { -- g_warning ("Could not connect to gnome-screensaver: %s", -- error->message); -- g_error_free (error); -- return; -- } -- -- /* Finish the upower_notify_sleep_cb() call by locking the screen */ -- g_debug ("gnome-screensaver activated, doing gnome-screensaver lock"); -- g_dbus_proxy_call (manager->priv->screensaver_proxy, -- "Lock", -- NULL, G_DBUS_CALL_FLAGS_NONE, -1, -- NULL, NULL, NULL); --} -- --static void - idle_dbus_signal_cb (GDBusProxy *proxy, - const gchar *sender_name, - const gchar *signal_name, -@@ -3479,75 +3444,38 @@ out: - } - - static void --lock_screensaver (GsdPowerManager *manager) -+lock_screensaver (GsdPowerManager *manager, -+ GSourceFunc done_cb) - { - gboolean do_lock; - - do_lock = g_settings_get_boolean (manager->priv->settings_screensaver, - "lock-enabled"); -- if (!do_lock) -+ if (!do_lock && done_cb) { -+ done_cb (manager); - return; -- -- if (manager->priv->screensaver_proxy != NULL) { -- g_debug ("doing gnome-screensaver lock"); -- g_dbus_proxy_call (manager->priv->screensaver_proxy, -- "Lock", -- NULL, G_DBUS_CALL_FLAGS_NONE, -1, -- NULL, NULL, NULL); -- } else { -- /* connect to the screensaver first */ -- g_dbus_proxy_new_for_bus (G_BUS_TYPE_SESSION, -- G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES, -- NULL, -- GS_DBUS_NAME, -- GS_DBUS_PATH, -- GS_DBUS_INTERFACE, -- NULL, -- sleep_cb_screensaver_proxy_ready_cb, -- manager); - } --} - --static void --upower_notify_sleep_cb (UpClient *client, -- UpSleepKind sleep_kind, -- GsdPowerManager *manager) --{ -- lock_screensaver (manager); --} -- --static void --upower_notify_resume_cb (UpClient *client, -- UpSleepKind sleep_kind, -- GsdPowerManager *manager) --{ -- gboolean ret; -- GError *error = NULL; -- -- /* this displays the unlock dialogue so the user doesn't have -- * to move the mouse or press any key before the window comes up */ -- if (manager->priv->screensaver_proxy != NULL) { -- g_dbus_proxy_call (manager->priv->screensaver_proxy, -- "SimulateUserActivity", -- NULL, -- G_DBUS_CALL_FLAGS_NONE, -- -1, NULL, NULL, NULL); -- } -- -- /* close existing notifications on resume, the system power -- * state is probably different now */ -- notify_close_if_showing (manager->priv->notification_low); -- notify_close_if_showing (manager->priv->notification_discharging); -- -- /* ensure we turn the panel back on after resume */ -- ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen, -- GNOME_RR_DPMS_ON, -- &error); -- if (!ret) { -- g_warning ("failed to turn the panel on after resume: %s", -- error->message); -- g_error_free (error); -- } -+ g_dbus_connection_call (manager->priv->connection, -+ GS_DBUS_NAME, -+ GS_DBUS_PATH, -+ GS_DBUS_INTERFACE, -+ "Lock", -+ NULL, NULL, -+ G_DBUS_CALL_FLAGS_NONE, -1, -+ NULL, NULL, NULL); -+ -+ /* Wait until gnome-shell shield animation is done -+ * -+ * FIXME: the shell should mark the lock as active -+ * when the shield is down, then we could wait for -+ * that. This would also fix the problem that we wait -+ * needlessly when the shell has already locked the -+ * screen because it is initiating the suspend. -+ * -+ * https://bugzilla.gnome.org/show_bug.cgi?id=685053 -+ */ -+ g_timeout_add (500, done_cb, manager); - } - - static void -@@ -3757,6 +3685,287 @@ out: - return ret; - } - -+static void -+inhibit_lid_switch_done (GObject *source, -+ GAsyncResult *result, -+ gpointer user_data) -+{ -+ GDBusProxy *proxy = G_DBUS_PROXY (source); -+ GsdPowerManager *manager = GSD_POWER_MANAGER (user_data); -+ GError *error = NULL; -+ GVariant *res; -+ GUnixFDList *fd_list = NULL; -+ gint idx; -+ -+ res = g_dbus_proxy_call_with_unix_fd_list_finish (proxy, &fd_list, result, &error); -+ if (res == NULL) { -+ g_warning ("Unable to inhibit lid switch: %s", error->message); -+ g_error_free (error); -+ } else { -+ g_variant_get (res, "(h)", &idx); -+ manager->priv->inhibit_lid_switch_fd = g_unix_fd_list_get (fd_list, idx, &error); -+ if (manager->priv->inhibit_lid_switch_fd == -1) { -+ g_warning ("Failed to receive system inhibitor fd: %s", error->message); -+ g_error_free (error); -+ } -+ g_debug ("System inhibitor fd is %d", manager->priv->inhibit_lid_switch_fd); -+ g_object_unref (fd_list); -+ g_variant_unref (res); -+ } -+} -+ -+static void -+inhibit_lid_switch (GsdPowerManager *manager) -+{ -+ GVariant *params; -+ -+ if (manager->priv->inhibit_lid_switch_taken) { -+ g_debug ("already inhibited lid-switch"); -+ return; -+ } -+ g_debug ("Adding lid switch system inhibitor"); -+ manager->priv->inhibit_lid_switch_taken = TRUE; -+ -+ params = g_variant_new ("(ssss)", -+ "handle-lid-switch", -+ g_get_user_name (), -+ "Multiple displays attached", -+ "block"); -+ g_dbus_proxy_call_with_unix_fd_list (manager->priv->logind_proxy, -+ "Inhibit", -+ params, -+ 0, -+ G_MAXINT, -+ NULL, -+ NULL, -+ inhibit_lid_switch_done, -+ manager); -+} -+ -+static void -+uninhibit_lid_switch (GsdPowerManager *manager) -+{ -+ if (manager->priv->inhibit_lid_switch_fd == -1) { -+ g_debug ("no lid-switch inhibitor"); -+ return; -+ } -+ g_debug ("Removing lid switch system inhibitor"); -+ close (manager->priv->inhibit_lid_switch_fd); -+ manager->priv->inhibit_lid_switch_fd = -1; -+ manager->priv->inhibit_lid_switch_taken = FALSE; -+} -+ -+static void -+inhibit_suspend_done (GObject *source, -+ GAsyncResult *result, -+ gpointer user_data) -+{ -+ GDBusProxy *proxy = G_DBUS_PROXY (source); -+ GsdPowerManager *manager = GSD_POWER_MANAGER (user_data); -+ GError *error = NULL; -+ GVariant *res; -+ GUnixFDList *fd_list = NULL; -+ gint idx; -+ -+ res = g_dbus_proxy_call_with_unix_fd_list_finish (proxy, &fd_list, result, &error); -+ if (res == NULL) { -+ g_warning ("Unable to inhibit suspend: %s", error->message); -+ g_error_free (error); -+ } else { -+ g_variant_get (res, "(h)", &idx); -+ manager->priv->inhibit_suspend_fd = g_unix_fd_list_get (fd_list, idx, &error); -+ if (manager->priv->inhibit_suspend_fd == -1) { -+ g_warning ("Failed to receive system inhibitor fd: %s", error->message); -+ g_error_free (error); -+ } -+ g_debug ("System inhibitor fd is %d", manager->priv->inhibit_suspend_fd); -+ g_object_unref (fd_list); -+ g_variant_unref (res); -+ } -+} -+ -+/* We take a delay inhibitor here, which causes logind to send a -+ * PrepareToSleep signal, which gives us a chance to lock the screen -+ * and do some other preparations. -+ */ -+static void -+inhibit_suspend (GsdPowerManager *manager) -+{ -+ if (manager->priv->inhibit_suspend_taken) { -+ g_debug ("already inhibited lid-switch"); -+ return; -+ } -+ g_debug ("Adding suspend delay inhibitor"); -+ manager->priv->inhibit_suspend_taken = TRUE; -+ g_dbus_proxy_call_with_unix_fd_list (manager->priv->logind_proxy, -+ "Inhibit", -+ g_variant_new ("(ssss)", -+ "sleep", -+ g_get_user_name (), -+ "GNOME needs to lock the screen", -+ "delay"), -+ 0, -+ G_MAXINT, -+ NULL, -+ NULL, -+ inhibit_suspend_done, -+ manager); -+} -+ -+static void -+uninhibit_suspend (GsdPowerManager *manager) -+{ -+ if (manager->priv->inhibit_suspend_fd == -1) { -+ g_debug ("no suspend delay inhibitor"); -+ return; -+ } -+ g_debug ("Removing suspend delay inhibitor"); -+ close (manager->priv->inhibit_suspend_fd); -+ manager->priv->inhibit_suspend_fd = -1; -+ manager->priv->inhibit_suspend_taken = FALSE; -+} -+ -+static gboolean -+randr_output_is_on (GnomeRROutput *output) -+{ -+ GnomeRRCrtc *crtc; -+ -+ crtc = gnome_rr_output_get_crtc (output); -+ if (!crtc) -+ return FALSE; -+ return gnome_rr_crtc_get_current_mode (crtc) != NULL; -+} -+ -+static gboolean -+external_monitor_is_connected (GnomeRRScreen *screen) -+{ -+ GnomeRROutput **outputs; -+ guint i; -+ -+ if (g_file_test ("/tmp/external_connected", G_FILE_TEST_EXISTS)) -+ return TRUE; -+ -+ /* see if we have more than one screen plugged in */ -+ outputs = gnome_rr_screen_list_outputs (screen); -+ for (i = 0; outputs[i] != NULL; i++) { -+ if (randr_output_is_on (outputs[i]) && -+ !gnome_rr_output_is_laptop (outputs[i])) -+ return TRUE; -+ } -+ -+ return FALSE; -+} -+ -+static void -+on_randr_event (GnomeRRScreen *screen, gpointer user_data) -+{ -+ GsdPowerManager *manager = GSD_POWER_MANAGER (user_data); -+ -+ /* when a second monitor is plugged in, we take the -+ * handle-lid-switch inhibitor lock of logind to prevent -+ * it from suspending. -+ * -+ * Uninhibiting is done in the inhibit_lid_switch_timer, -+ * since we want to give users a few seconds when unplugging -+ * and replugging an external monitor, not suspend right away. -+ */ -+ if (external_monitor_is_connected (screen) && -+ !g_settings_get_boolean (manager->priv->settings, -+ "lid-close-suspend-with-external-monitor")) { -+ inhibit_lid_switch (manager); -+ setup_inhibit_lid_switch_timer (manager); -+ } -+ else { -+ restart_inhibit_lid_switch_timer (manager); -+ } -+} -+ -+static gboolean -+screen_lock_done_cb (gpointer data) -+{ -+ GsdPowerManager *manager = data; -+ -+ /* lift the delay inhibit, so logind can proceed */ -+ uninhibit_suspend (manager); -+ -+ return FALSE; -+} -+ -+static void -+handle_suspend_actions (GsdPowerManager *manager) -+{ -+ gboolean ret; -+ GError *error = NULL; -+ -+ /* ensure we turn the panel back on after resume */ -+ ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen, -+ GNOME_RR_DPMS_ON, -+ &error); -+ if (!ret) { -+ g_warning ("failed to turn the panel on after resume: %s", -+ error->message); -+ g_error_free (error); -+ } -+ -+ lock_screensaver (manager, screen_lock_done_cb); -+} -+ -+static void -+handle_resume_actions (GsdPowerManager *manager) -+{ -+ gboolean ret; -+ GError *error = NULL; -+ -+ /* this displays the unlock dialogue so the user doesn't have -+ * to move the mouse or press any key before the window comes up */ -+ g_dbus_connection_call (manager->priv->connection, -+ GS_DBUS_NAME, -+ GS_DBUS_PATH, -+ GS_DBUS_INTERFACE, -+ "SimulateUserActivity", -+ NULL, NULL, -+ G_DBUS_CALL_FLAGS_NONE, -1, -+ NULL, NULL, NULL); -+ -+ /* close existing notifications on resume, the system power -+ * state is probably different now */ -+ notify_close_if_showing (manager->priv->notification_low); -+ notify_close_if_showing (manager->priv->notification_discharging); -+ -+ /* ensure we turn the panel back on after resume */ -+ ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen, -+ GNOME_RR_DPMS_ON, -+ &error); -+ if (!ret) { -+ g_warning ("failed to turn the panel on after resume: %s", -+ error->message); -+ g_error_free (error); -+ } -+ -+ /* set up the delay again */ -+ inhibit_suspend (manager); -+} -+ -+static void -+logind_proxy_signal_cb (GDBusProxy *proxy, -+ const gchar *sender_name, -+ const gchar *signal_name, -+ GVariant *parameters, -+ gpointer user_data) -+{ -+ GsdPowerManager *manager = GSD_POWER_MANAGER (user_data); -+ gboolean is_about_to_suspend; -+ -+ if (g_strcmp0 (signal_name, "PrepareForSleep") != 0) -+ return; -+ g_variant_get (parameters, "(b)", &is_about_to_suspend); -+ if (is_about_to_suspend) { -+ handle_suspend_actions (manager); -+ } else { -+ handle_resume_actions (manager); -+ } -+} -+ - gboolean - gsd_power_manager_start (GsdPowerManager *manager, - GError **error) -@@ -3766,6 +3975,25 @@ gsd_power_manager_start (GsdPowerManager - g_debug ("Starting power manager"); - gnome_settings_profile_start (NULL); - -+ manager->priv->logind_proxy = -+ g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, -+ 0, -+ NULL, -+ SYSTEMD_DBUS_NAME, -+ SYSTEMD_DBUS_PATH, -+ SYSTEMD_DBUS_INTERFACE, -+ NULL, -+ error); -+ if (manager->priv->logind_proxy == NULL) { -+ g_warning ("no systemd support"); -+ return FALSE; -+ } -+ g_signal_connect (manager->priv->logind_proxy, "g-signal", -+ G_CALLBACK (logind_proxy_signal_cb), -+ manager); -+ /* Set up a delay inhibitor to be informed about suspend attempts */ -+ inhibit_suspend (manager); -+ - /* track the active session */ - manager->priv->session = gnome_settings_session_new (); - g_signal_connect (manager->priv->session, "notify::state", -@@ -3780,10 +4008,6 @@ gsd_power_manager_start (GsdPowerManager - 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 (); -- g_signal_connect (manager->priv->up_client, "notify-sleep", -- G_CALLBACK (upower_notify_sleep_cb), manager); -- g_signal_connect (manager->priv->up_client, "notify-resume", -- G_CALLBACK (upower_notify_resume_cb), manager); - 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); -@@ -3897,6 +4121,9 @@ gsd_power_manager_start (GsdPowerManager - manager->priv->x11_screen = gnome_rr_screen_new (gdk_screen_get_default (), error); - if (manager->priv->x11_screen == NULL) - return FALSE; -+ g_signal_connect (manager->priv->x11_screen, "changed", G_CALLBACK (on_randr_event), manager); -+ /* set up initial state */ -+ on_randr_event (manager->priv->x11_screen, manager); - - /* ensure the default dpms timeouts are cleared */ - ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen, -@@ -3928,6 +4155,11 @@ gsd_power_manager_stop (GsdPowerManager - { - g_debug ("Stopping power manager"); - -+ if (manager->priv->inhibit_lid_switch_timer_id != 0) { -+ g_source_remove (manager->priv->inhibit_lid_switch_timer_id); -+ manager->priv->inhibit_lid_switch_timer_id = 0; -+ } -+ - if (manager->priv->bus_cancellable != NULL) { - g_cancellable_cancel (manager->priv->bus_cancellable); - g_object_unref (manager->priv->bus_cancellable); -@@ -3939,8 +4171,6 @@ gsd_power_manager_stop (GsdPowerManager - manager->priv->introspection_data = NULL; - } - -- kill_lid_close_safety_timer (manager); -- - g_signal_handlers_disconnect_by_data (manager->priv->up_client, manager); - - g_clear_object (&manager->priv->connection); -@@ -3948,6 +4178,19 @@ gsd_power_manager_stop (GsdPowerManager - g_clear_object (&manager->priv->settings); - g_clear_object (&manager->priv->settings_screensaver); - g_clear_object (&manager->priv->up_client); -+ -+ if (manager->priv->inhibit_lid_switch_fd != -1) { -+ close (manager->priv->inhibit_lid_switch_fd); -+ manager->priv->inhibit_lid_switch_fd = -1; -+ manager->priv->inhibit_lid_switch_taken = FALSE; -+ } -+ if (manager->priv->inhibit_suspend_fd != -1) { -+ close (manager->priv->inhibit_suspend_fd); -+ manager->priv->inhibit_suspend_fd = -1; -+ manager->priv->inhibit_suspend_taken = FALSE; -+ } -+ -+ g_clear_object (&manager->priv->logind_proxy); - g_clear_object (&manager->priv->x11_screen); - - g_ptr_array_unref (manager->priv->devices_array); -@@ -3981,6 +4224,8 @@ static void - gsd_power_manager_init (GsdPowerManager *manager) - { - manager->priv = GSD_POWER_MANAGER_GET_PRIVATE (manager); -+ manager->priv->inhibit_lid_switch_fd = -1; -+ manager->priv->inhibit_suspend_fd = -1; - } - - static void diff --git a/gnome-settings-daemon-notify-idle-resumed.patch b/gnome-settings-daemon-notify-idle-resumed.patch index de3f08d..a460808 100644 --- a/gnome-settings-daemon-notify-idle-resumed.patch +++ b/gnome-settings-daemon-notify-idle-resumed.patch @@ -1,8 +1,8 @@ -Index: gnome-settings-daemon-3.6.3/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in +Index: gnome-settings-daemon-3.7.90/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in =================================================================== ---- gnome-settings-daemon-3.6.3.orig/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in -+++ gnome-settings-daemon-3.6.3/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in -@@ -148,5 +148,10 @@ +--- gnome-settings-daemon-3.7.90.orig/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in ++++ gnome-settings-daemon-3.7.90/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in +@@ -106,5 +106,10 @@ <_summary>If we should show the recalled battery warning for a broken battery <_description>If we should show the recalled battery warning for a broken battery. Set this to false only if you know your battery is okay. @@ -13,27 +13,27 @@ Index: gnome-settings-daemon-3.6.3/data/org.gnome.settings-daemon.plugins.power. + -Index: gnome-settings-daemon-3.6.3/plugins/power/gsd-power-manager.c +Index: gnome-settings-daemon-3.7.90/plugins/power/gsd-power-manager.c =================================================================== ---- gnome-settings-daemon-3.6.3.orig/plugins/power/gsd-power-manager.c -+++ gnome-settings-daemon-3.6.3/plugins/power/gsd-power-manager.c -@@ -194,6 +194,7 @@ struct GsdPowerManagerPrivate - UpDevice *device_composite; - NotifyNotification *notification_discharging; +--- gnome-settings-daemon-3.7.90.orig/plugins/power/gsd-power-manager.c ++++ gnome-settings-daemon-3.7.90/plugins/power/gsd-power-manager.c +@@ -186,6 +186,7 @@ struct GsdPowerManagerPrivate NotifyNotification *notification_low; + NotifyNotification *notification_sleep_warning; + NotifyNotification *notification_logout_warning; + NotifyNotification *notification_resumed; - ca_context *canberra_context; - ca_proplist *critical_alert_loop_props; - guint32 critical_alert_timeout_id; -@@ -204,6 +205,7 @@ struct GsdPowerManagerPrivate - GtkStatusIcon *status_icon; - guint xscreensaver_watchdog_timer_id; + GsdPowerActionType sleep_action_type; + gboolean battery_is_low; /* laptop battery low, or UPS discharging */ + +@@ -212,6 +213,7 @@ struct GsdPowerManagerPrivate + gboolean inhibit_suspend_taken; + guint inhibit_lid_switch_timer_id; gboolean is_virtual_machine; + GsdPowerActionType last_idle_power_action; - /* systemd stuff */ - GDBusProxy *logind_proxy; -@@ -2909,6 +2911,49 @@ kbd_backlight_dim (GsdPowerManager *mana + /* Idles */ + GnomeIdleMonitor *idle_monitor; +@@ -2452,6 +2454,49 @@ is_session_active (GsdPowerManager *mana } static void @@ -83,7 +83,7 @@ Index: gnome-settings-daemon-3.6.3/plugins/power/gsd-power-manager.c idle_set_mode (GsdPowerManager *manager, GsdPowerIdleMode mode) { gboolean ret = FALSE; -@@ -3012,6 +3057,8 @@ idle_set_mode (GsdPowerManager *manager, +@@ -2544,6 +2589,8 @@ idle_set_mode (GsdPowerManager *manager, action_type = g_settings_get_enum (manager->priv->settings, "sleep-inactive-ac-type"); } @@ -92,7 +92,7 @@ Index: gnome-settings-daemon-3.6.3/plugins/power/gsd-power-manager.c do_power_action_type (manager, action_type); /* turn on screen and restore user-selected brightness level */ -@@ -3066,7 +3113,6 @@ idle_set_mode (GsdPowerManager *manager, +@@ -2590,7 +2637,6 @@ idle_set_mode (GsdPowerManager *manager, } manager->priv->kbd_brightness_pre_dim = -1; } @@ -100,9 +100,9 @@ Index: gnome-settings-daemon-3.6.3/plugins/power/gsd-power-manager.c } } -@@ -3932,6 +3978,12 @@ handle_resume_actions (GsdPowerManager * - notify_close_if_showing (manager->priv->notification_low); - notify_close_if_showing (manager->priv->notification_discharging); +@@ -3364,6 +3410,12 @@ handle_resume_actions (GsdPowerManager * + notify_close_if_showing (manager->priv->notification_ups_discharging); + main_battery_or_ups_low_changed (manager, FALSE); + if (manager->priv->last_idle_power_action == GSD_POWER_ACTION_SUSPEND || + manager->priv->last_idle_power_action == GSD_POWER_ACTION_HIBERNATE) @@ -111,5 +111,5 @@ Index: gnome-settings-daemon-3.6.3/plugins/power/gsd-power-manager.c + manager->priv->last_idle_power_action = GSD_POWER_ACTION_NOTHING; + /* ensure we turn the panel back on after resume */ - ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen, - GNOME_RR_DPMS_ON, + backlight_enable (manager); + diff --git a/gnome-settings-daemon.changes b/gnome-settings-daemon.changes index cba4402..53ad805 100644 --- a/gnome-settings-daemon.changes +++ b/gnome-settings-daemon.changes @@ -1,3 +1,282 @@ +------------------------------------------------------------------- +Tue Mar 26 10:15:41 UTC 2013 - dimstar@opensuse.org + +- Update to version 3.8.0: + + Color: + - Set the default profile locale to be en_US, not EN_us. + + Cursor: + - Fix crash with X.org prior to 1.14, requires a matching + gnome-desktop release as well. + + Power: + - Fix state problems if gnome-shell crashes or is killed within + the screensaver. + + Updated translations. + +------------------------------------------------------------------- +Mon Mar 25 21:40:18 UTC 2013 - dimstar@opensuse.org + +- Fix gnome-settings-daemon-bnc462640-mute-action.patch: At some + point the schema changed and even though the patch applied, it + was at the wrong point in the schema. + +------------------------------------------------------------------- +Tue Mar 19 20:07:51 UTC 2013 - dimstar@opensuse.org + +- Update to version 3.7.92: + + Font: + - Remove reference to font schema. + + Keyboard: + - Fix extra layouts being forgotten on GDM's second launch. + - Fix dead keys and similar features being broken in legacy + applications. + - Avoid delay switch to IBus input source the first time + around. + + Media keys: + - Remove obsolete check for XInput2. + - Use the shell's D-Bus interface to show OSDs. + - Fix warnings on startup trying to call gnome-shell. + + Updated translations. + +------------------------------------------------------------------- +Tue Mar 5 14:43:49 UTC 2013 - dimstar@opensuse.org + +- Update to version 3.7.91: + + Cursor: + - Disable code to make it popup the On-Screen Keyboard on + touchscreens. + + Media keys: + - Key grabbing is now done in gnome-shell, which fixes problems + with keybindings not working in certain conditions. + + Sound: + - Fix possible crashes when starting in a clean home directory. + +------------------------------------------------------------------- +Tue Feb 19 19:01:55 UTC 2013 - dimstar@opensuse.org + +- Update to version 3.7.90: + + Set locale and IBus envvars on startup for our children. + + Remove background plugin, as background handling is now done in + gnome-shell. + + A11y settings: + - Import GIO instead of GTK+/GDK. + - Do enable toolkit accessibility, even if we don't need it, + for the benefit of third-party/legacy toolkits and apps. + + Cursor: + - Enable the on-screen keyboard when touch is used. + + Keyboard: + - Adapt to gnome-xkb-info API change. + + Media keys: + - Add other bindings to the whitelist. + + Power: + - Make blanking timeouts match. + - Show notifications when about to suspend from idle. + - Wake up the display when about to logout. + - Adapt to new GnomeIdleMonitor API. + - Don't change the brightness on inactive sessions. + + Remote Display: + - Disable animations on Xvnc as well. + - Re-enable animations if Vino is gone. + + Sound: + - Avoid polling non-existent directories. + + Updates: + - Fix crasher when firmware updates is disabled. + + XSettings: + - propagate the remember-recent-files GSetting to XSettings. + + Wacom: + - Bump req for GDK_FULLSCREEN_ON_ALL_MONITORS. +- Rebase gnome-settings-daemon-notify-idle-resumed.patch. + +------------------------------------------------------------------- +Fri Feb 8 13:05:18 UTC 2013 - dimstar@opensuse.org + +- Update to version 3.7.5.1: + + Fix keyboard shortcut handling with XI 2.3. + +------------------------------------------------------------------- +Tue Feb 5 19:12:46 UTC 2013 - dimstar@opensuse.org + +- Update to version 3.7.5: + + A11Y Keyboard: + - Disable everything on exit if no settings changed. + - Remove GTK+ fallback dialogues. + + Color: + - Set the correct metadata on the auto-created EDID profile. + - Switching to a new account shouldn't warn. + + Daemon: + - Also apply LC_PAPER. + + Media Keys: + - Use D-Bus API to lock the screen. + - Use F20 for the temporary mic mute key. + + Power: + - Add way to disable the backlight helper. + - Avoid dead-locking with gnome-shell on startup. + - Avoid possible crash when shutting down quickly or at + startup. + - Drop explicit screen locking on suspend. + - Fix incorrect backlight level on restore. + - Handle dim idle the same way as other idles. + - Lots of test additions. + - Wake up the display when unplugging the AC too. + + Remote DIsplay: + - Detect SPICE sessions as well. + - Monitor Vino's Connected status. + + Screenshot: + - Save to GtkRecentManager on success. + - Lots of test additions. + + Updates: + - Allow the shell time to initialize before checking for + offline update failures. + + Wacom: + - Use regular fullscreen window for OSD. + + Updated translations. +- Rebase gnome-settings-daemon-notify-idle-resumed.patch. + +------------------------------------------------------------------- +Mon Jan 21 03:43:52 UTC 2013 - dimstar@opensuse.org + +- Update to version 3.7.4: + + Color: + - Addition to implement new mockups in gnome-control-center + + Housekeeping: + - Fix purging not working + + Keyboard: + - Don't migrate ibus xkb engines + + Media-keys: + - Save screenshots without using gnome-screenshot + - Updated design for the on-screen OSD + - Show output device when changing the volume + - Add OSD support for the "Battery" key on certain laptops + - Add support for the microphone mute key on certain keyboards + - Move sound initialisation out of the critical startup path + + Power: + - Add test suite + - Fix Power settings panel not picking up the updated + brightness + - Fix dimming of the screen not working, and don't dim when + inhibited + - Fix timeouts being longer than configured in some cases + - Aggressively blank the screen when the shield is down + - Update idle configuration when plugging or unplugging the + mains + - Really turn off the screen on suspend for MacBook laptops + - Allow overriding VM detection with the gnome.is_vm=[01] + kernel command-line parameter + + Updates: + - Support notification filtering + + Wacom: + - Fix problems resetting touch buttons on 64-bit systems + - Allow switching modes while OSD is active + + XRandR: + - use default-monitors-setup for autoconfiguration even after + boot + + Updated translations. +- Drop gnome-settings-daemon-double-suspend.patch: fixed upstream. + +------------------------------------------------------------------- +Mon Jan 21 02:49:19 UTC 2013 - dimstar@opensuse.org + +- Update to version 3.7.3: + + Add implementation for Freedesktop.org ScreenSaver inhibition + API + + Disable animations on slow links (VNC for example) + + Remove fallback mode handling code + + Disable the smartcard plugin for now + + Cursor: + - Only show the cursor when the mouse gets used + + Daemon: + - Many plugins ordering bug fixes + - Use gnome-session properties instead of libsystemd-login + - Allow whitelisting plugins, to make it easier for gdm to + catch up + - Install all the schemas, even the ones for which the plugins + aren't installed + - Add a way to replace the daemon + - exit gracefully if the session name is already taken + + Housekeeping: + - Implement automatic purging of trash, along with a D-Bus + interface for it + + Keyboard: + - Fix build without IBus + - Fix potential infinite loop due to num-lock handling + - Don't print warnings when calls are cancelled + - Handle keyboard shortcuts with Caps Lock for switching inputs + + Media-keys: + - Use the shared libgnome-volume-control code + - Support launching gnome-calculator instead of gcalctool + - Add default shortcuts for the magnifier + - Add repeat to the brightness keys + + Mouse: + - Fix natural horizontal scroll + + Power: + - Remove unused settings keys + - Do not attempt to suspend, dim or blank if running inside a + VM + - Port to GnomeIdleMonitor from gnome-desktop + - Adjust sleep timer to blank timer in some cases + - Check if action is available before taking action + - Hide critical battery warning when power is plugged + - Fix possible race with gnome-shell on startup + + Print-notifications: + - Don't show strange notifications when printing + + Sound: + - Fix sound plugin never working properly + + Updates: + - Fix warning on startup with PackageKit < 0.8.1 + + Wacom: + - Avoid infinite recursion with a non-Wacom display + - Fix handling of Cintiq 24HD mode-switch buttons + - Mode switch LED fixes for some tablets + - Add OSD help window (see gnome-control-center for how to + launch it) + + XRandR: + - Add new follow-lid behavior and tie gsd-power lid-close to + XRandR + - Avoid crasher if XRandR calls fail on startup + - Fix the "rotate" button not working + - Swap axes for some (non-Wacom) tablets as well +- Add pkgconfig(librsvg-2.0) BuildRequires: new dependency for the + wacom plugin. +- Drop gnome-settings-daemon-build-without-ibus.patch: fixed + upstream. +- Rebase gnome-settings-daemon-bnc462640-mute-action.patch. +- Define with_smartcard, set to 0, to conditionally package the + smartcard plugin. Currently disabled, as it's broken. + +------------------------------------------------------------------- +Mon Jan 21 01:31:29 UTC 2013 - dimstar@opensuse.org + +- Add gnome-settings-daemon-build-without-ibus.patch: Fix build + without IBUS. +- Clean up the BUILD_FROM_VCS conditions. + +------------------------------------------------------------------- +Mon Jan 21 00:50:01 UTC 2013 - dimstar@opensuse.org + +- Update to version 3.7.1: + + Daemon: + - Provide a singleton SessionManager proxy object + - Ensure session registration happens before other idles + - Use logind for suspending and rebooting the system + - Require logind for session tracking + + Input: + - Clarify hotplug command exit value handling + - Add trackball detection + + Keyboard: + - Add default ibus engine for Indic locales + - Don't apply global settings for every keyboard + + Mouse: + - Re-enable touchpad when mouse isn't present + + Power: + - Fix "no devices" error path in gsd-backlight-helper + - Add a watchdog to keep X's builtin screen saver disabled + - Fix a number of possible crashers + + Wacom: + - Add support for touchstrips and touchrings without a + modeswitch + + XSettings: + - Optimise xsettings changes. +- Change with_systemd defines to 1 in order to enable systemd. + ------------------------------------------------------------------- Sun Jan 20 11:38:01 UTC 2013 - dimstar@opensuse.org diff --git a/gnome-settings-daemon.spec b/gnome-settings-daemon.spec index 7a3b467..bccf74e 100644 --- a/gnome-settings-daemon.spec +++ b/gnome-settings-daemon.spec @@ -23,14 +23,17 @@ # We can currently not build ibus support, as it requires ibus 1.5, which has not been released yet. %define with_ibus 0 +# Smart-Card support is disabled in version 3.7.3 +%define with_smartcard 0 + Name: gnome-settings-daemon -Version: 3.6.3 +Version: 3.8.0 Release: 0 Summary: Settings daemon for the GNOME desktop License: GPL-2.0+ Group: System/GUI/GNOME Url: http://www.gnome.org -Source: http://download.gnome.org/sources/gnome-settings-daemon/3.6/%{name}-%{version}.tar.xz +Source: http://download.gnome.org/sources/gnome-settings-daemon/3.8/%{name}-%{version}.tar.xz # PATCH-NEEDS-REBASE gnome-settings-daemon-system-proxy-configuration.diff Patch2: gnome-settings-daemon-system-proxy-configuration.diff # PATCH-NEEDS-REBASE gnome-settings-daemon-apport-monitor.patch bnc439203 jblunck@novell.com -- Add apport monitoring plugin. (was PATCH-FEATURE-UPSTREAM) @@ -45,9 +48,7 @@ Patch14: gnome-packagekit-fate302445.patch Patch15: gnome-packagekit-BNC383261.patch # PATCH-FIX-OPENSUSE gnome-settings-daemon-stop-reload-proxy-settings.patch bnc689592#c1, bnc#538353 glin@suse.com -- Stop g-s-d poping up the authentication dialog for reloading the proxy settings Patch17: gnome-settings-daemon-stop-reload-proxy-settings.patch -# PATCH-FIX-UPSTREAM gnome-settings-daemon-double-suspend.patch bgo#680689 dimstar@opensuse.org -- Fix system suspending againt after waking up (fight with systemd) -Patch18: gnome-settings-daemon-double-suspend.patch -# PATCH-FEATURE-UPSTREAM gnome-settings-daemon-notify-idle-resumed.patch bnc#439018 bnc#708182 bgo575467 hpj@suse.com -- notify user about auto suspend when returning from sleep +# PATCH-FEATURE-UPSTREAM gnome-settings-daemon-notify-idle-resumed.patch bnc#439018 bnc#708182 bgo#575467 hpj@suse.com -- notify user about auto suspend when returning from sleep Patch19: gnome-settings-daemon-notify-idle-resumed.patch BuildRequires: cups-devel BuildRequires: fdupes @@ -63,13 +64,10 @@ BuildRequires: polkit BuildRequires: pkgconfig(colord) >= 0.1.12 BuildRequires: pkgconfig(fontconfig) BuildRequires: pkgconfig(gconf-2.0) >= 2.6.1 -BuildRequires: pkgconfig(glib-2.0) >= 2.31.0 -%if 0%{?BUILD_FROM_VCS} -BuildRequires: gnome-common -%endif -BuildRequires: pkgconfig(gnome-desktop-3.0) >= 3.5.3 -BuildRequires: pkgconfig(gsettings-desktop-schemas) >= 3.5.90 -BuildRequires: pkgconfig(gtk+-3.0) >= 3.3.18 +BuildRequires: pkgconfig(glib-2.0) >= 2.35.3 +BuildRequires: pkgconfig(gnome-desktop-3.0) >= 3.7.90 +BuildRequires: pkgconfig(gsettings-desktop-schemas) >= 3.7.2.1 +BuildRequires: pkgconfig(gtk+-3.0) >= 3.7.8 BuildRequires: pkgconfig(gudev-1.0) %if %{with_ibus} BuildRequires: pkgconfig(ibus-1.0) >= 1.4.99 @@ -78,12 +76,13 @@ BuildRequires: pkgconfig(kbproto) BuildRequires: pkgconfig(lcms2) BuildRequires: pkgconfig(libcanberra-gtk3) BuildRequires: pkgconfig(libnotify) >= 0.7.3 -BuildRequires: pkgconfig(libpulse) -BuildRequires: pkgconfig(libpulse-mainloop-glib) +BuildRequires: pkgconfig(libpulse) >= 2.0 +BuildRequires: pkgconfig(libpulse-mainloop-glib) >= 2.0 +BuildRequires: pkgconfig(librsvg-2.0) >= 2.36.2 %if %{with_systemd} BuildRequires: pkgconfig(libsystemd-login) %endif -BuildRequires: pkgconfig(libwacom) >= 0.6 +BuildRequires: pkgconfig(libwacom) >= 0.7 BuildRequires: pkgconfig(nss) BuildRequires: pkgconfig(packagekit-glib2) >= 0.7.4 BuildRequires: pkgconfig(upower-glib) >= 0.9.11 @@ -131,7 +130,6 @@ contact the settings daemon via its DBus interface. %prep %setup -q translation-update-upstream -%if !0%{?BUILD_FROM_VCS} # Disabled because of the non-rebased patches #gnome-patch-translation-prepare #%%patch2 -p0 @@ -144,13 +142,7 @@ translation-update-upstream # PATCH-NEEDS-REBASE #%%patch15 -p0 %patch17 -p1 -%patch18 -p1 %patch19 -p1 -%endif - -%if 0%{?BUILD_FROM_VCS} -NOCONFIGURE=1 /usr/bin/gnome-autogen.sh -%endif %build autoreconf -f -i @@ -176,7 +168,6 @@ make %{?jobs:-j%jobs} V=1 %{__rm} %{buildroot}%{_datadir}/locale/en@shaw/LC_MESSAGES/* %endif find %{buildroot}%{_libdir} -name '*.la' -type f -delete -print -%suse_update_desktop_file gnome-fallback-mount-helper %suse_update_desktop_file gnome-settings-daemon %find_lang %{name} %{?no_lang_C} %fdupes %{buildroot} @@ -195,14 +186,12 @@ rm -rf %{buildroot} %files %defattr(-,root,root) %doc AUTHORS COPYING ChangeLog NEWS -%{_datadir}/dbus-1/interfaces/org.gnome.SettingsDaemonUpdates.xml %if %{with_ibus} %{_datadir}/dbus-1/services/org.freedesktop.IBus.service %endif %{_datadir}/gnome-settings-daemon/ %{_datadir}/gnome-settings-daemon-3.0/ %dir %{_libexecdir}/gnome-settings-daemon-3.0/ -%{_libexecdir}/gnome-settings-daemon-3.0/gnome-fallback-mount-helper %{_libexecdir}/gnome-settings-daemon-3.0/gnome-settings-daemon %{_libexecdir}/gnome-settings-daemon-3.0/gsd-backlight-helper %{_libexecdir}/gnome-settings-daemon-3.0/gsd-input-sources-switcher @@ -219,7 +208,6 @@ rm -rf %{buildroot} # Explicitly list all the plugins so we know we don't lose any %{_libdir}/gnome-settings-daemon-3.0/liba11y-keyboard.so %{_libdir}/gnome-settings-daemon-3.0/liba11y-settings.so -%{_libdir}/gnome-settings-daemon-3.0/libbackground.so %{_libdir}/gnome-settings-daemon-3.0/libclipboard.so %{_libdir}/gnome-settings-daemon-3.0/libcolor.so %{_libdir}/gnome-settings-daemon-3.0/libcursor.so @@ -231,12 +219,15 @@ rm -rf %{buildroot} %{_libdir}/gnome-settings-daemon-3.0/liborientation.so %{_libdir}/gnome-settings-daemon-3.0/libpower.so %{_libdir}/gnome-settings-daemon-3.0/libprint-notifications.so +%{_libdir}/gnome-settings-daemon-3.0/libremote-display.so +%{_libdir}/gnome-settings-daemon-3.0/libscreensaver-proxy.so +%if %{with_smartcard} %{_libdir}/gnome-settings-daemon-3.0/libsmartcard.so +%endif %{_libdir}/gnome-settings-daemon-3.0/libsound.so %{_libdir}/gnome-settings-daemon-3.0/libupdates.so %{_libdir}/gnome-settings-daemon-3.0/libxrandr.so %{_libdir}/gnome-settings-daemon-3.0/libxsettings.so -%{_sysconfdir}/xdg/autostart/gnome-fallback-mount-helper.desktop %{_sysconfdir}/xdg/autostart/gnome-settings-daemon.desktop %{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.enums.xml %{_datadir}/glib-2.0/schemas/org.gnome.settings-daemon.peripherals.gschema.xml