[arch-commits] Commit in gnome-settings-daemon/trunk (PKGBUILD fix_color_crash.patch)

Ionut Biru ibiru at archlinux.org
Mon Oct 3 16:28:06 EDT 2011


    Date: Monday, October 3, 2011 @ 16:28:05
  Author: ibiru
Revision: 139628

fix color crash

Added:
  gnome-settings-daemon/trunk/fix_color_crash.patch
Modified:
  gnome-settings-daemon/trunk/PKGBUILD

-----------------------+
 PKGBUILD              |    9 +-
 fix_color_crash.patch |  186 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 192 insertions(+), 3 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2011-10-03 20:26:30 UTC (rev 139627)
+++ PKGBUILD	2011-10-03 20:28:05 UTC (rev 139628)
@@ -3,7 +3,7 @@
 
 pkgname=gnome-settings-daemon
 pkgver=3.2.0
-pkgrel=1
+pkgrel=2
 pkgdesc="The GNOME Settings daemon"
 arch=('i686' 'x86_64')
 license=('GPL')
@@ -15,11 +15,14 @@
 groups=('gnome')
 replaces=(gnome-settings-daemon-pulse)
 conflicts=(gnome-settings-daemon-pulse)
-source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz)
-sha256sums=('a85242ce60b9c9bb3fbad124ee06430a408f39fa31d2d4ea29dc179db724447b')
+source=(http://ftp.gnome.org/pub/gnome/sources/${pkgname}/${pkgver%.*}/${pkgname}-${pkgver}.tar.xz
+fix_color_crash.patch)
+sha256sums=('a85242ce60b9c9bb3fbad124ee06430a408f39fa31d2d4ea29dc179db724447b'
+            'b249d21702d4cf9a3a8dc177ba17c00d33e8e742e548811552d79ddeff1e91e3')
 
 build() {
   cd "$srcdir/$pkgname-$pkgver"
+  patch -Np1 -i "$srcdir/fix_color_crash.patch"
   ./configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var \
       --libexecdir=/usr/lib/gnome-settings-daemon --disable-static --enable-pulse \
       --with-pnpids=/usr/share/libgnome-desktop-3.0/pnp.ids

Added: fix_color_crash.patch
===================================================================
--- fix_color_crash.patch	                        (rev 0)
+++ fix_color_crash.patch	2011-10-03 20:28:05 UTC (rev 139628)
@@ -0,0 +1,186 @@
+From fd4c0057b8e3f72b30acb6f1c82688e29b31c0c0 Mon Sep 17 00:00:00 2001
+From: Richard Hughes <richard at hughsie.com>
+Date: Mon, 03 Oct 2011 08:52:06 +0000
+Subject: color: Fix a crash if ~/.local is deleted at runtime
+
+Resolves https://bugzilla.gnome.org/show_bug.cgi?id=660664
+---
+diff --git a/plugins/color/gcm-profile-store.c b/plugins/color/gcm-profile-store.c
+index d325162..3dde406 100644
+--- a/plugins/color/gcm-profile-store.c
++++ b/plugins/color/gcm-profile-store.c
+@@ -254,6 +254,8 @@ gcm_profile_store_process_child (GcmProfileStore *profile_store,
+ 
+         /* check we're not in a loop */
+         helper = gcm_profile_store_find_directory (profile_store, path);
++        if (helper == NULL)
++                goto out;
+         if (helper->depth > GCM_PROFILE_STORE_MAX_RECURSION_LEVELS) {
+                 g_warning ("recursing more than %i levels deep is insane",
+                            GCM_PROFILE_STORE_MAX_RECURSION_LEVELS);
+--
+cgit v0.9.0.2
+From e3313eb16fd2cb25ab3fbc010837b910e525acf6 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess at hadess.net>
+Date: Mon, 03 Oct 2011 10:02:56 +0000
+Subject: color: Simplify gcm_profile_store_mkdir_with_parents()
+
+No need to check for the path existing,
+g_file_make_directory_with_parents() will do that for us.
+---
+(limited to 'plugins/color/gcm-profile-store.c')
+
+diff --git a/plugins/color/gcm-profile-store.c b/plugins/color/gcm-profile-store.c
+index 3dde406..d705604 100644
+--- a/plugins/color/gcm-profile-store.c
++++ b/plugins/color/gcm-profile-store.c
+@@ -419,19 +419,12 @@ static gboolean
+ gcm_profile_store_mkdir_with_parents (const gchar *filename, GError **error)
+ {
+         gboolean ret;
+-        GFile *file = NULL;
+ 
+         /* ensure destination exists */
+-        ret = g_file_test (filename, G_FILE_TEST_EXISTS);
+-        if (!ret) {
+-                file = g_file_new_for_path (filename);
+-                ret = g_file_make_directory_with_parents (file, NULL, error);
+-                if (!ret)
+-                        goto out;
+-        }
+-out:
+-        if (file != NULL)
+-                g_object_unref (file);
++        file = g_file_new_for_path (filename);
++        ret = g_file_make_directory_with_parents (file, NULL, error);
++        g_object_unref (file);
++
+         return ret;
+ }
+ 
+--
+cgit v0.9.0.2
+From a711ba99fd5a9bc7bf79dcdc763deed39440eb86 Mon Sep 17 00:00:00 2001
+From: Richard Hughes <richard at hughsie.com>
+Date: Mon, 03 Oct 2011 10:38:36 +0000
+Subject: Make commit e3313eb16fd2cb25ab3fbc010837b910e525acf6 actually compile
+
+---
+(limited to 'plugins/color/gcm-profile-store.c')
+
+diff --git a/plugins/color/gcm-profile-store.c b/plugins/color/gcm-profile-store.c
+index d705604..0b3cfa0 100644
+--- a/plugins/color/gcm-profile-store.c
++++ b/plugins/color/gcm-profile-store.c
+@@ -419,6 +419,7 @@ static gboolean
+ gcm_profile_store_mkdir_with_parents (const gchar *filename, GError **error)
+ {
+         gboolean ret;
++        GFile *file;
+ 
+         /* ensure destination exists */
+         file = g_file_new_for_path (filename);
+--
+cgit v0.9.0.2
+From 42fa1af884fda1590bc7af0f78e4fc70d0eb621b Mon Sep 17 00:00:00 2001
+From: Richard Hughes <richard at hughsie.com>
+Date: Mon, 03 Oct 2011 10:34:04 +0000
+Subject: color: Cancel any in-progress directory searching on plugin unload
+
+---
+diff --git a/plugins/color/gcm-profile-store.c b/plugins/color/gcm-profile-store.c
+index 0b3cfa0..bcb7adc 100644
+--- a/plugins/color/gcm-profile-store.c
++++ b/plugins/color/gcm-profile-store.c
+@@ -34,6 +34,7 @@ struct _GcmProfileStorePrivate
+ {
+         GPtrArray                       *filename_array;
+         GPtrArray                       *directory_array;
++        GCancellable                    *cancellable;
+ };
+ 
+ enum {
+@@ -326,7 +327,7 @@ gcm_profile_store_next_files_cb (GObject *source_object,
+         g_file_enumerator_next_files_async  (enumerator,
+                                              5,
+                                              G_PRIORITY_LOW,
+-                                             NULL,
++                                             profile_store->priv->cancellable,
+                                              gcm_profile_store_next_files_cb,
+                                              user_data);
+ 
+@@ -343,6 +344,7 @@ gcm_profile_store_enumerate_children_cb (GObject *source_object,
+         gchar *path = NULL;
+         GError *error = NULL;
+         GFileEnumerator *enumerator;
++        GcmProfileStore *profile_store = GCM_PROFILE_STORE (user_data);
+ 
+         enumerator = g_file_enumerate_children_finish (G_FILE (source_object),
+                                                        res,
+@@ -360,7 +362,7 @@ gcm_profile_store_enumerate_children_cb (GObject *source_object,
+         g_file_enumerator_next_files_async (enumerator,
+                                             5,
+                                             G_PRIORITY_LOW,
+-                                            NULL,
++                                            profile_store->priv->cancellable,
+                                             gcm_profile_store_next_files_cb,
+                                             user_data);
+         g_object_unref (enumerator);
+@@ -407,7 +409,7 @@ gcm_profile_store_search_path (GcmProfileStore *profile_store, const gchar *path
+                                          G_FILE_ATTRIBUTE_STANDARD_TYPE,
+                                          G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
+                                          G_PRIORITY_LOW,
+-                                         NULL,
++                                         profile_store->priv->cancellable,
+                                          gcm_profile_store_enumerate_children_cb,
+                                          profile_store);
+ out:
+@@ -416,14 +418,16 @@ out:
+ }
+ 
+ static gboolean
+-gcm_profile_store_mkdir_with_parents (const gchar *filename, GError **error)
++gcm_profile_store_mkdir_with_parents (const gchar *filename,
++                                      GCancellable *cancellable,
++                                      GError **error)
+ {
+         gboolean ret;
+         GFile *file;
+ 
+         /* ensure destination exists */
+         file = g_file_new_for_path (filename);
+-        ret = g_file_make_directory_with_parents (file, NULL, error);
++        ret = g_file_make_directory_with_parents (file, cancellable, error);
+         g_object_unref (file);
+ 
+         return ret;
+@@ -438,7 +442,9 @@ gcm_profile_store_search (GcmProfileStore *profile_store)
+ 
+         /* get Linux per-user profiles */
+         path = g_build_filename (g_get_user_data_dir (), "icc", NULL);
+-        ret = gcm_profile_store_mkdir_with_parents (path, &error);
++        ret = gcm_profile_store_mkdir_with_parents (path,
++                                                    profile_store->priv->cancellable,
++                                                    &error);
+         if (!ret) {
+                 g_warning ("failed to create directory on startup: %s", error->message);
+                 g_error_free (error);
+@@ -480,6 +486,7 @@ static void
+ gcm_profile_store_init (GcmProfileStore *profile_store)
+ {
+         profile_store->priv = GCM_PROFILE_STORE_GET_PRIVATE (profile_store);
++        profile_store->priv->cancellable = g_cancellable_new ();
+         profile_store->priv->filename_array = g_ptr_array_new_with_free_func (g_free);
+         profile_store->priv->directory_array = g_ptr_array_new_with_free_func ((GDestroyNotify) gcm_profile_store_helper_free);
+ }
+@@ -490,6 +497,8 @@ gcm_profile_store_finalize (GObject *object)
+         GcmProfileStore *profile_store = GCM_PROFILE_STORE (object);
+         GcmProfileStorePrivate *priv = profile_store->priv;
+ 
++        g_cancellable_cancel (profile_store->priv->cancellable);
++        g_object_unref (profile_store->priv->cancellable);
+         g_ptr_array_unref (priv->filename_array);
+         g_ptr_array_unref (priv->directory_array);
+ 
+--
+cgit v0.9.0.2



More information about the arch-commits mailing list