[gnome-settings-daemon] Towards a working gsd

Matthias Clasen mclasen at fedoraproject.org
Fri Jan 20 19:05:18 UTC 2012


commit 7b980256bf04c10be29d3bf5c5beba1a146ee81f
Author: Matthias Clasen <mclasen at redhat.com>
Date:   Fri Jan 20 14:05:11 2012 -0500

    Towards a working gsd

 ...keys-Even-more-careful-when-shutting-down.patch |   31 +++++++++++++
 ...-Don-t-call-g_object_unref-on-a-GPtrArray.patch |   26 +++++++++++
 ...ttings-be-more-careful-when-shutting-down.patch |   28 ++++++++++++
 ...edia-keys-Be-more-careful-when-finalizing.patch |   45 ++++++++++++++++++++
 gnome-settings-daemon.spec                         |   15 ++++++-
 5 files changed, 144 insertions(+), 1 deletions(-)
---
diff --git a/0001-Media-keys-Even-more-careful-when-shutting-down.patch b/0001-Media-keys-Even-more-careful-when-shutting-down.patch
new file mode 100644
index 0000000..2520953
--- /dev/null
+++ b/0001-Media-keys-Even-more-careful-when-shutting-down.patch
@@ -0,0 +1,31 @@
+From ae303fb2b05265888f8b65ba2236782693369da7 Mon Sep 17 00:00:00 2001
+From: Matthias Clasen <mclasen at redhat.com>
+Date: Fri, 20 Jan 2012 09:11:14 -0500
+Subject: [PATCH] Media keys: Be more careful when shutting down
+
+The gtksettings instance is also initialized in an idle, so
+we must handle it still being NULL when we shut down.
+---
+ plugins/media-keys/gsd-media-keys-manager.c |    6 ++++--
+ 1 files changed, 4 insertions(+), 2 deletions(-)
+
+diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
+index e4052f3..51053ea 100644
+--- a/plugins/media-keys/gsd-media-keys-manager.c
++++ b/plugins/media-keys/gsd-media-keys-manager.c
+@@ -2147,8 +2147,10 @@ gsd_media_keys_manager_stop (GsdMediaKeysManager *manager)
+                                           manager);
+         }
+ 
+-        g_signal_handlers_disconnect_by_func (manager->priv->gtksettings, sound_theme_changed, manager);
+-        manager->priv->gtksettings = NULL;
++        if (manager->priv->gtksettings != NULL) {
++                g_signal_handlers_disconnect_by_func (manager->priv->gtksettings, sound_theme_changed, manager);
++                manager->priv->gtksettings = NULL;
++        }
+ 
+         if (manager->priv->ca) {
+                 ca_context_destroy (manager->priv->ca);
+-- 
+1.7.8.4
+
diff --git a/0001-Updates-Don-t-call-g_object_unref-on-a-GPtrArray.patch b/0001-Updates-Don-t-call-g_object_unref-on-a-GPtrArray.patch
new file mode 100644
index 0000000..50c8320
--- /dev/null
+++ b/0001-Updates-Don-t-call-g_object_unref-on-a-GPtrArray.patch
@@ -0,0 +1,26 @@
+From f84c73599aa7c7c6bba94471dc445dbbea521f72 Mon Sep 17 00:00:00 2001
+From: Matthias Clasen <mclasen at redhat.com>
+Date: Fri, 20 Jan 2012 00:40:41 -0500
+Subject: [PATCH] Updates: Don't call g_object_unref on a GPtrArray
+
+It doesn't work.
+---
+ plugins/updates/gsd-updates-firmware.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/plugins/updates/gsd-updates-firmware.c b/plugins/updates/gsd-updates-firmware.c
+index 17ca804..a04ad27 100644
+--- a/plugins/updates/gsd-updates-firmware.c
++++ b/plugins/updates/gsd-updates-firmware.c
+@@ -493,7 +493,7 @@ out:
+         if (error_code != NULL)
+                 g_object_unref (error_code);
+         if (array != NULL)
+-                g_object_unref (array);
++                g_ptr_array_unref (array);
+         if (results != NULL)
+                 g_object_unref (results);
+         return item;
+-- 
+1.7.8.4
+
diff --git a/0001-XSettings-be-more-careful-when-shutting-down.patch b/0001-XSettings-be-more-careful-when-shutting-down.patch
new file mode 100644
index 0000000..dbc2f1e
--- /dev/null
+++ b/0001-XSettings-be-more-careful-when-shutting-down.patch
@@ -0,0 +1,28 @@
+From c16d6d46dfdeff509b888140d4fa1a04888ca355 Mon Sep 17 00:00:00 2001
+From: Matthias Clasen <mclasen at redhat.com>
+Date: Fri, 20 Jan 2012 09:06:08 -0500
+Subject: [PATCH] XSettings: be more careful when shutting down
+
+The shell name watch_id may still be 0 when we shut down right
+away, because another instance is already running.
+---
+ plugins/xsettings/gsd-xsettings-manager.c |    3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/plugins/xsettings/gsd-xsettings-manager.c b/plugins/xsettings/gsd-xsettings-manager.c
+index 075cb37..fa49a3e 100644
+--- a/plugins/xsettings/gsd-xsettings-manager.c
++++ b/plugins/xsettings/gsd-xsettings-manager.c
+@@ -929,7 +929,8 @@ gnome_xsettings_manager_stop (GnomeXSettingsManager *manager)
+ 
+         stop_fontconfig_monitor (manager);
+ 
+-        g_bus_unwatch_name (manager->priv->shell_name_watch_id);
++        if (manager->priv->shell_name_watch_id > 0)
++                g_bus_unwatch_name (manager->priv->shell_name_watch_id);
+ 
+         if (p->settings != NULL) {
+                 g_hash_table_destroy (p->settings);
+-- 
+1.7.8.4
+
diff --git a/0001-media-keys-Be-more-careful-when-finalizing.patch b/0001-media-keys-Be-more-careful-when-finalizing.patch
new file mode 100644
index 0000000..d0a01ce
--- /dev/null
+++ b/0001-media-keys-Be-more-careful-when-finalizing.patch
@@ -0,0 +1,45 @@
+From 42f9427729d763e7fd62aec9e15b036531489682 Mon Sep 17 00:00:00 2001
+From: Matthias Clasen <mclasen at redhat.com>
+Date: Fri, 20 Jan 2012 09:00:54 -0500
+Subject: [PATCH] media-keys: Be more careful when finalizing
+
+The keys array is initalized in an idle, so if we go right back down
+because another instance of gsd is already running, we crash in
+finalize, trying to clear a nonexisting array.
+---
+ plugins/media-keys/gsd-media-keys-manager.c |   16 +++++++++-------
+ 1 files changed, 9 insertions(+), 7 deletions(-)
+
+diff --git a/plugins/media-keys/gsd-media-keys-manager.c b/plugins/media-keys/gsd-media-keys-manager.c
+index 14ff09f..61e3a56 100644
+--- a/plugins/media-keys/gsd-media-keys-manager.c
++++ b/plugins/media-keys/gsd-media-keys-manager.c
+@@ -2209,16 +2209,18 @@ gsd_media_keys_manager_stop (GsdMediaKeysManager *manager)
+ 
+         gdk_error_trap_push ();
+ 
+-        for (i = 0; i < priv->keys->len; ++i) {
+-                MediaKey *key;
++        if (priv->keys != NULL) {
++                for (i = 0; i < priv->keys->len; ++i) {
++                        MediaKey *key;
+ 
+-                key = g_ptr_array_index (manager->priv->keys, i);
++                        key = g_ptr_array_index (manager->priv->keys, i);
+ 
+-                if (key->key)
+-                        grab_key_unsafe (key->key, FALSE, priv->screens);
++                        if (key->key)
++                                grab_key_unsafe (key->key, FALSE, priv->screens);
++                }
++                g_ptr_array_free (priv->keys, TRUE);
++                priv->keys = NULL;
+         }
+-        g_ptr_array_free (priv->keys, TRUE);
+-        priv->keys = NULL;
+ 
+         gdk_flush ();
+         gdk_error_trap_pop_ignored ();
+-- 
+1.7.8.4
+
diff --git a/gnome-settings-daemon.spec b/gnome-settings-daemon.spec
index fb0d2a4..65921c2 100644
--- a/gnome-settings-daemon.spec
+++ b/gnome-settings-daemon.spec
@@ -1,6 +1,6 @@
 Name:           gnome-settings-daemon
 Version:        3.3.4
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        The daemon sharing settings from GNOME to GTK+/KDE applications
 
 Group:          System Environment/Daemons
@@ -12,6 +12,12 @@ Source:         http://download.gnome.org/sources/%{name}/3.3/%{name}-%{version}
 # Fedora specific patch
 Patch0: gsd-calculator.patch
 
+# upstream fixes
+Patch1: 0001-Updates-Don-t-call-g_object_unref-on-a-GPtrArray.patch
+Patch2: 0001-media-keys-Be-more-careful-when-finalizing.patch
+Patch3: 0001-XSettings-be-more-careful-when-shutting-down.patch
+Patch4: 0001-Media-keys-Even-more-careful-when-finalizing.patch
+
 Requires: control-center-filesystem
 
 BuildRequires:  dbus-glib-devel
@@ -58,6 +64,10 @@ developing applications that use %{name}.
 %prep
 %setup -q
 %patch0 -p1 -b .calc
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
 
 autoreconf -i -f
 
@@ -204,6 +214,9 @@ glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
 %{_datadir}/gnome-settings-daemon-3.0/input-device-example.sh
 
 %changelog
+* Fri Jan 20 2012 Matthias Clasen <mclasen at redhat.com> 3.3.4-2
+- Some crash fixes
+
 * Tue Jan 17 2012 Bastien Nocera <bnocera at redhat.com> 3.3.4-1
 - Update to 3.3.4
 


More information about the scm-commits mailing list