[cinnamon-settings-daemon] cherry pick upstream (includes bz 1182457)

leigh123linux leigh123linux at fedoraproject.org
Sun Feb 22 12:04:44 UTC 2015


commit 60891e3f876ff1fef3492276ffec1cbe47f6b277
Author: leigh123linux <leigh123linux at googlemail.com>
Date:   Sun Feb 22 12:04:35 2015 +0000

    cherry pick upstream (includes bz 1182457)

 0001-backport-follow-lid-behavior.patch            | 388 +++++++++++++++++++++
 ...l-display-activation-when-notebook-is-wok.patch |  32 ++
 ...n-free-a-new-GSettings-from-previous-comm.patch |  28 ++
 ...n-Always-send-a-response-to-a-dbus-method.patch |  42 +++
 cinnamon-settings-daemon.spec                      |  11 +-
 5 files changed, 500 insertions(+), 1 deletion(-)
---
diff --git a/0001-backport-follow-lid-behavior.patch b/0001-backport-follow-lid-behavior.patch
new file mode 100644
index 0000000..9f396bb
--- /dev/null
+++ b/0001-backport-follow-lid-behavior.patch
@@ -0,0 +1,388 @@
+From ea85ec938d8602bc0ea58bc36f0136c078a90ccf Mon Sep 17 00:00:00 2001
+From: Peter Hatina <phatina at redhat.com>
+Date: Sat, 31 Jan 2015 16:20:04 +0100
+Subject: [PATCH 1/2] backport 'follow lid' behavior
+
+---
+ data/csd-enums.h                                   |   3 +-
+ ...ettings-daemon.plugins.xrandr.gschema.xml.in.in |   4 +-
+ plugins/power/csd-power-manager.c                  | 134 +++++++++++++++++++++
+ plugins/xrandr/csd-xrandr-manager.c                |  43 ++++---
+ 4 files changed, 166 insertions(+), 18 deletions(-)
+
+diff --git a/data/csd-enums.h b/data/csd-enums.h
+index 29c09c3..095f614 100644
+--- a/data/csd-enums.h
++++ b/data/csd-enums.h
+@@ -79,7 +79,8 @@ typedef enum
+ {
+   CSD_XRANDR_BOOT_BEHAVIOUR_DO_NOTHING,
+   CSD_XRANDR_BOOT_BEHAVIOUR_CLONE,
+-  CSD_XRANDR_BOOT_BEHAVIOUR_DOCK
++  CSD_XRANDR_BOOT_BEHAVIOUR_DOCK,
++  CSD_XRANDR_BOOT_BEHAVIOUR_FOLLOW_LID
+ } CsdXrandrBootBehaviour;
+ 
+ typedef enum
+diff --git a/data/org.cinnamon.settings-daemon.plugins.xrandr.gschema.xml.in.in b/data/org.cinnamon.settings-daemon.plugins.xrandr.gschema.xml.in.in
+index 923d28e..d353afd 100644
+--- a/data/org.cinnamon.settings-daemon.plugins.xrandr.gschema.xml.in.in
++++ b/data/org.cinnamon.settings-daemon.plugins.xrandr.gschema.xml.in.in
+@@ -16,9 +16,9 @@
+       <_description>Priority to use for this plugin in cinnamon-settings-daemon startup queue</_description>
+     </key>
+     <key name="default-monitors-setup" enum="org.cinnamon.settings-daemon.CsdXrandrBootBehaviour">
+-      <default>'do-nothing'</default>
++      <default>'follow-lid'</default>
+       <_summary>Whether to turn off specific monitors after boot</_summary>
+-      <_description>'clone' will display the same thing on all monitors, 'dock' will switch off the internal monitor, 'do-nothing' will use the default Xorg behaviour (extend the desktop in recent versions)</_description>
++      <_description>clone' will display the same thing on all monitors, 'dock' will switch off the internal monitor, 'do-nothing' will use the default Xorg behaviour (extend the desktop in recent versions). The default, 'follow-lid', will choose between 'do-nothing' and 'dock' depending on whether the lid is (respectively) open or closed.</_description>
+     </key>
+   </schema>
+ </schemalist>
+diff --git a/plugins/power/csd-power-manager.c b/plugins/power/csd-power-manager.c
+index 3d662d7..e1e78ec 100644
+--- a/plugins/power/csd-power-manager.c
++++ b/plugins/power/csd-power-manager.c
+@@ -61,6 +61,7 @@
+ #define UPOWER_DBUS_INTERFACE_KBDBACKLIGHT      "org.freedesktop.UPower.KbdBacklight"
+ 
+ #define CSD_POWER_SETTINGS_SCHEMA               "org.cinnamon.settings-daemon.plugins.power"
++#define CSD_XRANDR_SETTINGS_SCHEMA              "org.cinnamon.settings-daemon.plugins.xrandr"
+ 
+ #define CSD_DBUS_SERVICE                        "org.cinnamon.SettingsDaemon"
+ #define CSD_DBUS_PATH                           "/org/cinnamon/SettingsDaemon"
+@@ -170,6 +171,7 @@ struct CsdPowerManagerPrivate
+         gboolean                 lid_is_closed;
+         GSettings               *settings;
+         GSettings               *settings_screensaver;
++        GSettings               *settings_xrandr;
+         UpClient                *up_client;
+         GDBusNodeInfo           *introspection_data;
+         GDBusConnection         *connection;
+@@ -217,6 +219,7 @@ struct CsdPowerManagerPrivate
+         gboolean                 inhibit_lid_switch_taken;
+         gint                     inhibit_suspend_fd;
+         gboolean                 inhibit_suspend_taken;
++        guint                    inhibit_lid_switch_timer_id;
+ };
+ 
+ enum {
+@@ -231,8 +234,12 @@ static UpDevice *engine_get_composite_device (CsdPowerManager *manager, UpDevice
+ static UpDevice *engine_update_composite_device (CsdPowerManager *manager, UpDevice *original_device);
+ static GIcon    *engine_get_icon (CsdPowerManager *manager);
+ static gchar    *engine_get_summary (CsdPowerManager *manager);
++
++static gboolean  external_monitor_is_connected (GnomeRRScreen *screen);
+ static void      do_power_action_type (CsdPowerManager *manager, CsdPowerActionType action_type);
+ static void      do_lid_closed_action (CsdPowerManager *manager);
++static void      inhibit_lid_switch (CsdPowerManager *manager);
++static void      uninhibit_lid_switch (CsdPowerManager *manager);
+ static void      lock_screensaver (CsdPowerManager *manager);
+ static void      kill_lid_close_safety_timer (CsdPowerManager *manager);
+ 
+@@ -2063,6 +2070,114 @@ upower_kbd_toggle (CsdPowerManager *manager,
+         return ret;
+ }
+ 
++static gboolean
++suspend_on_lid_close (CsdPowerManager *manager)
++{
++        CsdXrandrBootBehaviour val;
++
++        if (!external_monitor_is_connected (manager->priv->x11_screen))
++                return TRUE;
++
++        val = g_settings_get_enum (manager->priv->settings_xrandr, "default-monitors-setup");
++        return val == CSD_XRANDR_BOOT_BEHAVIOUR_DO_NOTHING;
++}
++
++static gboolean
++inhibit_lid_switch_timer_cb (CsdPowerManager *manager)
++{
++        if (suspend_on_lid_close (manager)) {
++                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;
++        }
++
++        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
++ * when the laptop is *not* suspended for some reason.  We'll check conditions
++ * again in the timeout handler to see if we can suspend then.
++ */
++static void
++setup_inhibit_lid_switch_timer (CsdPowerManager *manager)
++{
++        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->inhibit_lid_switch_timer_id = g_timeout_add_seconds (CSD_POWER_MANAGER_LID_CLOSE_SAFETY_TIMEOUT,
++                                                                          (GSourceFunc) inhibit_lid_switch_timer_cb,
++                                                                          manager);
++        g_source_set_name_by_id (manager->priv->inhibit_lid_switch_timer_id, "[CsdPowerManager] lid close safety timer");
++}
++
++static void
++restart_inhibit_lid_switch_timer (CsdPowerManager *manager)
++{
++        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 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;
++
++        /* 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)
++{
++        CsdPowerManager *manager = CSD_POWER_MANAGER (user_data);
++
++        if (suspend_on_lid_close (manager)) {
++                restart_inhibit_lid_switch_timer (manager);
++                return;
++        }
++
++        /* 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.
++        */
++        inhibit_lid_switch (manager);
++        setup_inhibit_lid_switch_timer (manager);
++}
++
+ static void
+ do_lid_open_action (CsdPowerManager *manager)
+ {
+@@ -3731,6 +3846,20 @@ inhibit_lid_switch (CsdPowerManager *manager)
+ }
+ 
+ static void
++uninhibit_lid_switch (CsdPowerManager *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)
+@@ -3994,6 +4123,7 @@ csd_power_manager_start (CsdPowerManager *manager,
+         g_signal_connect (manager->priv->settings, "changed",
+                           G_CALLBACK (engine_settings_key_changed_cb), manager);
+         manager->priv->settings_screensaver = g_settings_new ("org.cinnamon.desktop.screensaver");
++        manager->priv->settings_xrandr = g_settings_new (CSD_XRANDR_SETTINGS_SCHEMA);
+         manager->priv->up_client = up_client_new ();
+ #if ! UP_CHECK_VERSION(0,99,0)
+         g_signal_connect (manager->priv->up_client, "notify-sleep",
+@@ -4120,6 +4250,10 @@ csd_power_manager_start (CsdPowerManager *manager,
+         g_signal_connect (manager->priv->idletime, "alarm-expired",
+                           G_CALLBACK (idle_idletime_alarm_expired_cb), manager);
+ 
++        /* set up the screens */
++        g_signal_connect (manager->priv->x11_screen, "changed", G_CALLBACK (on_randr_event), manager);
++        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,
+                                              GNOME_RR_DPMS_ON,
+diff --git a/plugins/xrandr/csd-xrandr-manager.c b/plugins/xrandr/csd-xrandr-manager.c
+index 35bbf71..c144624 100644
+--- a/plugins/xrandr/csd-xrandr-manager.c
++++ b/plugins/xrandr/csd-xrandr-manager.c
+@@ -650,11 +650,7 @@ user_says_things_are_ok (CsdXrandrManager *manager, GdkWindow *parent_window)
+         gtk_main ();
+ 
+         gtk_widget_destroy (timeout.dialog);
+-
+-        if (timeout_id) {
+-            g_source_remove (timeout_id);
+-            timeout_id = 0;
+-        }
++        g_source_remove (timeout_id);
+ 
+         if (timeout.response_id == GTK_RESPONSE_ACCEPT)
+                 return TRUE;
+@@ -881,8 +877,6 @@ make_clone_setup (CsdXrandrManager *manager, GnomeRRScreen *screen)
+                 return NULL;
+ 
+         result = gnome_rr_config_new_current (screen, NULL);
+-        gnome_rr_config_set_clone (result, TRUE);
+-
+         outputs = gnome_rr_config_get_outputs (result);
+ 
+         for (i = 0; outputs[i] != NULL; ++i) {
+@@ -924,6 +918,8 @@ make_clone_setup (CsdXrandrManager *manager, GnomeRRScreen *screen)
+                 result = NULL;
+         }
+ 
++        gnome_rr_config_set_clone (result, TRUE);
++
+         print_configuration (result, "clone setup");
+ 
+         return result;
+@@ -1005,8 +1001,6 @@ make_laptop_setup (CsdXrandrManager *manager, GnomeRRScreen *screen)
+         GnomeRROutputInfo **outputs = gnome_rr_config_get_outputs (result);
+         int i;
+ 
+-        gnome_rr_config_set_clone (result, FALSE);
+-
+         for (i = 0; outputs[i] != NULL; ++i) {
+                 GnomeRROutputInfo *info = outputs[i];
+ 
+@@ -1022,11 +1016,13 @@ make_laptop_setup (CsdXrandrManager *manager, GnomeRRScreen *screen)
+                 }
+         }
+ 
+-        if (result != NULL && config_is_all_off (result)) {
++        if (config_is_all_off (result)) {
+                 g_object_unref (G_OBJECT (result));
+                 result = NULL;
+         }
+ 
++        gnome_rr_config_set_clone (result, FALSE);
++
+         print_configuration (result, "Laptop setup");
+ 
+         /* FIXME - Maybe we should return NULL if there is more than
+@@ -1128,6 +1124,14 @@ trim_rightmost_outputs_that_dont_fit_in_framebuffer (GnomeRRScreen *rr_screen, G
+         return applicable;
+ }
+ 
++static gboolean
++follow_laptop_lid(CsdXrandrManager *manager)
++{
++        CsdXrandrBootBehaviour val;
++        val = g_settings_get_enum (manager->priv->settings, CONF_KEY_DEFAULT_MONITORS_SETUP);
++        return val == CSD_XRANDR_BOOT_BEHAVIOUR_FOLLOW_LID || val == CSD_XRANDR_BOOT_BEHAVIOUR_CLONE;
++}
++
+ static GnomeRRConfig *
+ make_xinerama_setup (CsdXrandrManager *manager, GnomeRRScreen *screen)
+ {
+@@ -1139,14 +1143,12 @@ make_xinerama_setup (CsdXrandrManager *manager, GnomeRRScreen *screen)
+         int i;
+         int x;
+ 
+-        gnome_rr_config_set_clone (result, FALSE);
+-
+         x = 0;
+         for (i = 0; outputs[i] != NULL; ++i) {
+                 GnomeRROutputInfo *info = outputs[i];
+ 
+                 if (is_laptop (screen, info)) {
+-                        if (laptop_lid_is_closed (manager))
++                        if (laptop_lid_is_closed (manager) && follow_laptop_lid (manager))
+                                 gnome_rr_output_info_set_active (info, FALSE);
+                         else {
+                                 gnome_rr_output_info_set_primary (info, TRUE);
+@@ -1169,6 +1171,8 @@ make_xinerama_setup (CsdXrandrManager *manager, GnomeRRScreen *screen)
+                 result = NULL;
+         }
+ 
++        gnome_rr_config_set_clone (result, FALSE);
++
+         print_configuration (result, "xinerama setup");
+ 
+         return result;
+@@ -1185,8 +1189,6 @@ make_other_setup (GnomeRRScreen *screen)
+         GnomeRROutputInfo **outputs = gnome_rr_config_get_outputs (result);
+         int i;
+ 
+-        gnome_rr_config_set_clone (result, FALSE);
+-
+         for (i = 0; outputs[i] != NULL; ++i) {
+                 GnomeRROutputInfo *info = outputs[i];
+ 
+@@ -1204,6 +1206,8 @@ make_other_setup (GnomeRRScreen *screen)
+                 result = NULL;
+         }
+ 
++        gnome_rr_config_set_clone (result, FALSE);
++
+         print_configuration (result, "other setup");
+ 
+         return result;
+@@ -1538,6 +1542,7 @@ is_wacom_tablet_device (CsdXrandrManager *mgr,
+         wacom_device = libwacom_new_from_path (priv->wacom_db, device_node, FALSE, NULL);
+         g_free (device_node);
+         if (wacom_device == NULL) {
++                g_free (device_node);
+                 return FALSE;
+         }
+         is_tablet = libwacom_has_touch (wacom_device) &&
+@@ -1862,6 +1867,12 @@ apply_default_boot_configuration (CsdXrandrManager *mgr, guint32 timestamp)
+         switch (boot) {
+         case CSD_XRANDR_BOOT_BEHAVIOUR_DO_NOTHING:
+                 return;
++        case CSD_XRANDR_BOOT_BEHAVIOUR_FOLLOW_LID:
++                if (laptop_lid_is_closed (mgr))
++                        config = make_other_setup (screen);
++                else
++                        config = make_xinerama_setup (mgr, screen);
++                break;
+         case CSD_XRANDR_BOOT_BEHAVIOUR_CLONE:
+                 config = make_clone_setup (mgr, screen);
+                 break;
+@@ -1992,6 +2003,8 @@ power_client_changed_cb (UpClient *client, gpointer data)
+ 
+         if (is_closed != priv->laptop_lid_is_closed) {
+                 priv->laptop_lid_is_closed = is_closed;
++                if (!follow_laptop_lid (manager))
++                    return;
+ 
+                 /* Refresh the RANDR state.  The lid just got opened/closed, so we can afford to
+                  * probe the outputs right now.  It will also help the case where we can't detect
+-- 
+1.9.3
+
diff --git a/0002-fix-external-display-activation-when-notebook-is-wok.patch b/0002-fix-external-display-activation-when-notebook-is-wok.patch
new file mode 100644
index 0000000..056e7d7
--- /dev/null
+++ b/0002-fix-external-display-activation-when-notebook-is-wok.patch
@@ -0,0 +1,32 @@
+From 724520b80d73fa0903435c71f68150c93ae58435 Mon Sep 17 00:00:00 2001
+From: Peter Hatina <phatina at redhat.com>
+Date: Sat, 31 Jan 2015 16:21:25 +0100
+Subject: [PATCH 2/2] fix external display activation when notebook is woken up
+ with closed lid
+
+---
+ plugins/xrandr/csd-xrandr-manager.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/plugins/xrandr/csd-xrandr-manager.c b/plugins/xrandr/csd-xrandr-manager.c
+index c144624..1661f0a 100644
+--- a/plugins/xrandr/csd-xrandr-manager.c
++++ b/plugins/xrandr/csd-xrandr-manager.c
+@@ -2016,8 +2016,12 @@ power_client_changed_cb (UpClient *client, gpointer data)
+ 
+                 if (is_closed)
+                         turn_off_laptop_display (manager, GDK_CURRENT_TIME); /* sucks not to have a timestamp for the notification */
+-                else
+-                        use_stored_configuration_or_auto_configure_outputs (manager, GDK_CURRENT_TIME);
++
++                /* Use stored configuration or auto-configure outputs all the
++                 * time. Don't switch between 2 possibilities; notebook can be
++                 * woken up with lid closed and then no output is activated.
++                 */
++                use_stored_configuration_or_auto_configure_outputs (manager, GDK_CURRENT_TIME);
+         }
+ }
+ 
+-- 
+1.9.3
+
diff --git a/0003-power-plugin-free-a-new-GSettings-from-previous-comm.patch b/0003-power-plugin-free-a-new-GSettings-from-previous-comm.patch
new file mode 100644
index 0000000..f8efa2c
--- /dev/null
+++ b/0003-power-plugin-free-a-new-GSettings-from-previous-comm.patch
@@ -0,0 +1,28 @@
+From 65e6a116638e268a1abd6856e2eb7b2f78350797 Mon Sep 17 00:00:00 2001
+From: Michael Webster <miketwebster at gmail.com>
+Date: Sun, 8 Feb 2015 10:02:09 -0500
+Subject: [PATCH] power plugin: free a new GSettings from previous commits
+
+---
+ plugins/power/csd-power-manager.c | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+diff --git a/plugins/power/csd-power-manager.c b/plugins/power/csd-power-manager.c
+index 350dc5c..1564be3 100644
+--- a/plugins/power/csd-power-manager.c
++++ b/plugins/power/csd-power-manager.c
+@@ -4324,6 +4324,11 @@ csd_power_manager_stop (CsdPowerManager *manager)
+                 manager->priv->settings_screensaver = NULL;
+         }
+ 
++        if (manager->priv->settings_xrandr != NULL) {
++                g_object_unref (manager->priv->settings_xrandr);
++                manager->priv->settings_xrandr = NULL;
++        }
++
+         if (manager->priv->up_client != NULL) {
+                 g_object_unref (manager->priv->up_client);
+                 manager->priv->up_client = NULL;
+-- 
+1.9.3
+
diff --git a/0004-sound-plugin-Always-send-a-response-to-a-dbus-method.patch b/0004-sound-plugin-Always-send-a-response-to-a-dbus-method.patch
new file mode 100644
index 0000000..de1da1a
--- /dev/null
+++ b/0004-sound-plugin-Always-send-a-response-to-a-dbus-method.patch
@@ -0,0 +1,42 @@
+From 3e89a435346c7d7aed03264f60529c1f8264bec4 Mon Sep 17 00:00:00 2001
+From: Michael Webster <miketwebster at gmail.com>
+Date: Thu, 5 Feb 2015 22:08:42 -0500
+Subject: [PATCH 09/10] sound plugin: Always send a response to a dbus method
+ call - this prevents a harmless warning when Cinnamon is restarted and the
+ login sound attempts to play a second time.
+
+---
+ plugins/sound/csd-sound-manager.c | 8 ++++++--
+ 1 file changed, 6 insertions(+), 2 deletions(-)
+
+diff --git a/plugins/sound/csd-sound-manager.c b/plugins/sound/csd-sound-manager.c
+index 999bfdf..eee2ac7 100644
+--- a/plugins/sound/csd-sound-manager.c
++++ b/plugins/sound/csd-sound-manager.c
+@@ -141,8 +141,10 @@ handle_sound_request (GDBusConnection       *connection,
+                                      CA_PROP_EVENT_ID,
+                                      sound_name,
+                                      NULL);
+-                    g_dbus_method_invocation_return_value (invocation, NULL);
+                 }
++
++                g_dbus_method_invocation_return_value (invocation, NULL);
++
+         } else if (g_strcmp0 (method_name, "PlaySoundFile") == 0) {
+                 const char *sound_file;
+                 guint id;
+@@ -155,8 +157,10 @@ handle_sound_request (GDBusConnection       *connection,
+                                      CA_PROP_MEDIA_FILENAME,
+                                      sound_file,
+                                      NULL);
+-                    g_dbus_method_invocation_return_value (invocation, NULL);
+                 }
++
++                g_dbus_method_invocation_return_value (invocation, NULL);
++
+         } else if (g_strcmp0 (method_name, "CancelSound") == 0) {
+                 guint id;
+ 
+-- 
+1.9.3
+
diff --git a/cinnamon-settings-daemon.spec b/cinnamon-settings-daemon.spec
index 01a1be7..8b72243 100644
--- a/cinnamon-settings-daemon.spec
+++ b/cinnamon-settings-daemon.spec
@@ -2,7 +2,7 @@
 
 Name:           cinnamon-settings-daemon
 Version:        2.4.3
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        The daemon sharing settings from CINNAMON to GTK+/KDE applications
 
 Group:          System Environment/Daemons
@@ -13,6 +13,12 @@ URL:            http://cinnamon.linuxmint.com
 #Source0:        http://leigh123linux.fedorapeople.org/pub/cinnamon-settings-daemon/source/cinnamon-settings-daemon-%%{version}.git%%{_internal_version}.tar.gz
 Source0:        http://leigh123linux.fedorapeople.org/pub/cinnamon-settings-daemon/source/cinnamon-settings-daemon-%{version}.tar.gz
 
+# Upstream patches
+Patch0:         0001-backport-follow-lid-behavior.patch
+Patch1:         0002-fix-external-display-activation-when-notebook-is-wok.patch
+Patch2:         0003-power-plugin-free-a-new-GSettings-from-previous-comm.patch
+Patch3:         0004-sound-plugin-Always-send-a-response-to-a-dbus-method.patch
+
 Requires:       cinnamon-control-center-filesystem
 Obsoletes:      cinnamon-settings-daemon-updates
 
@@ -131,6 +137,9 @@ fi
 
 
 %changelog
+* Sun Feb 22 2015 Leigh Scott <leigh123linux at googlemail.com> - 2.4.3-2
+- cherry pick upstream (includes bz 1182457)
+
 * Wed Nov 12 2014 Leigh Scott <leigh123linux at googlemail.com> - 2.4.3-1
 - update to 2.4.3
 


More information about the scm-commits mailing list