summaryrefslogtreecommitdiff
path: root/extra/gnome-settings-daemon
diff options
context:
space:
mode:
authorroot <root@rshg054.dnsready.net>2011-10-04 23:14:30 +0000
committerroot <root@rshg054.dnsready.net>2011-10-04 23:14:30 +0000
commit3567a49f79d2dbf828b723ab54982fa6c7ea1c80 (patch)
tree15fc309d3681df4da7a56189050fd5aa16fa9794 /extra/gnome-settings-daemon
parent57d05f7209f022aa99a8850aafbeec4cb85c3b5b (diff)
Tue Oct 4 23:14:30 UTC 2011
Diffstat (limited to 'extra/gnome-settings-daemon')
-rw-r--r--extra/gnome-settings-daemon/PKGBUILD11
-rw-r--r--extra/gnome-settings-daemon/fix_color_crash.patch186
2 files changed, 193 insertions, 4 deletions
diff --git a/extra/gnome-settings-daemon/PKGBUILD b/extra/gnome-settings-daemon/PKGBUILD
index ab9dbadde..0132134cd 100644
--- a/extra/gnome-settings-daemon/PKGBUILD
+++ b/extra/gnome-settings-daemon/PKGBUILD
@@ -1,9 +1,9 @@
-# $Id: PKGBUILD 139319 2011-10-01 18:58:22Z ibiru $
+# $Id: PKGBUILD 139631 2011-10-03 21:04:24Z ibiru $
# Maintainer: Jan de Groot <jgc@archlinux.org>
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 @@ url="http://www.gnome.org"
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
diff --git a/extra/gnome-settings-daemon/fix_color_crash.patch b/extra/gnome-settings-daemon/fix_color_crash.patch
new file mode 100644
index 000000000..24602100f
--- /dev/null
+++ b/extra/gnome-settings-daemon/fix_color_crash.patch
@@ -0,0 +1,186 @@
+From fd4c0057b8e3f72b30acb6f1c82688e29b31c0c0 Mon Sep 17 00:00:00 2001
+From: Richard Hughes <richard@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@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@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@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