summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandre Rostovtsev <tetromino@gmail.com>2011-10-03 23:24:38 -0400
committerAlexandre Rostovtsev <tetromino@gmail.com>2011-10-03 23:59:07 -0400
commit6e5c9de86538440ac92f3c8e244041293a478a53 (patch)
tree0f1cc2c6e7432af697cdfcab935396d43a762073 /gnome-base/gnome-settings-daemon/files
parentx11-misc/colord: add 0.1.13 (diff)
downloadgnome-6e5c9de86538440ac92f3c8e244041293a478a53.tar.gz
gnome-6e5c9de86538440ac92f3c8e244041293a478a53.tar.bz2
gnome-6e5c9de86538440ac92f3c8e244041293a478a53.zip
gnome-base/gnome-settings-daemon: lots of patches (incl. bug #385063)
Add another large batch of upstream patches from gnome-3-2 branch, fixing build errors, a number of runtime errors and crashes in the color plugin, and backlight issues. In particular, in combination with gnome-desktop-3.2.0-r1, fixes the incorrect DPMS timeout being set (reported by poncho <poncho@spahan.ch> in bug #385063). Also, raise colord dependency to 0.1.13 since it fixes polkit authorization errors at startup caused by running colord as a non-root user.
Diffstat (limited to 'gnome-base/gnome-settings-daemon/files')
-rw-r--r--gnome-base/gnome-settings-daemon/files/3.2.0/0008-printers-Fix-build-on-systems-without-LC_PAPER.patch79
-rw-r--r--gnome-base/gnome-settings-daemon/files/3.2.0/0009-power-Do-not-revert-to-the-pre-idle-brightness-if-id.patch33
-rw-r--r--gnome-base/gnome-settings-daemon/files/3.2.0/0010-color-Do-not-load-all-the-color-devices-twice-at-sta.patch76
-rw-r--r--gnome-base/gnome-settings-daemon/files/3.2.0/0011-color-Don-t-assign-the-same-device-more-than-once-at.patch91
-rw-r--r--gnome-base/gnome-settings-daemon/files/3.2.0/0012-color-Fix-critical-warning-if-the-user-disables-the-.patch91
-rw-r--r--gnome-base/gnome-settings-daemon/files/3.2.0/0013-color-Reset-the-gamma-tables-when-the-screen-configu.patch103
-rw-r--r--gnome-base/gnome-settings-daemon/files/3.2.0/0014-power-Ensure-the-DPMS-state-is-on-at-startup.patch42
-rw-r--r--gnome-base/gnome-settings-daemon/files/3.2.0/0015-color-Fix-make-check-by-including-lm-for-powf.patch26
-rw-r--r--gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.2.0-color-unbreak-loading-profiles.patch41
9 files changed, 582 insertions, 0 deletions
diff --git a/gnome-base/gnome-settings-daemon/files/3.2.0/0008-printers-Fix-build-on-systems-without-LC_PAPER.patch b/gnome-base/gnome-settings-daemon/files/3.2.0/0008-printers-Fix-build-on-systems-without-LC_PAPER.patch
new file mode 100644
index 00000000..b936a006
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/files/3.2.0/0008-printers-Fix-build-on-systems-without-LC_PAPER.patch
@@ -0,0 +1,79 @@
+From 512bac5200ad439083348ce447bf6106b9d78ca1 Mon Sep 17 00:00:00 2001
+From: Bastien Nocera <hadess@hadess.net>
+Date: Mon, 3 Oct 2011 11:28:28 +0100
+Subject: [PATCH 1/8] printers: Fix build on systems without LC_PAPER
+
+By using gtk_paper_size_get_default() directly to do all
+the hard work for us.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=660626
+---
+ plugins/print-notifications/gsd-printer.c | 29 +++++++++--------------------
+ 1 files changed, 9 insertions(+), 20 deletions(-)
+
+diff --git a/plugins/print-notifications/gsd-printer.c b/plugins/print-notifications/gsd-printer.c
+index 70676d4..aa405bc 100644
+--- a/plugins/print-notifications/gsd-printer.c
++++ b/plugins/print-notifications/gsd-printer.c
+@@ -24,6 +24,7 @@
+ #include <libnotify/notify.h>
+ #include <glib/gi18n.h>
+ #include <glib/gstdio.h>
++#include <gtk/gtk.h>
+ #include <cups/cups.h>
+ #include <cups/ppd.h>
+
+@@ -751,9 +752,8 @@ set_default_paper_size (const gchar *printer_name,
+ GVariant *output;
+ GError *error = NULL;
+ gchar **value = NULL;
+- gchar *paper_size;
+- char *locale;
+ gint i, j, k;
++ const gchar *paper_size;
+
+ proxy = g_dbus_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM,
+ G_DBUS_PROXY_FLAGS_NONE,
+@@ -770,24 +770,14 @@ set_default_paper_size (const gchar *printer_name,
+ return;
+ }
+
+- /* Set default PaperSize according to the locale */
+- locale = setlocale (LC_PAPER, NULL);
+- if (!locale)
+- locale = setlocale (LC_MESSAGES, NULL);
+-
+- if (!locale) {
+- g_object_unref (proxy);
+- return;
+- }
+-
+- /* CLDR 2.0 alpha
+- * http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/territory_language_information.html
+- */
+- if (g_regex_match_simple ("[^_.@]{2,3}_(BZ|CA|CL|CO|CR|GT|MX|NI|PA|PH|PR|SV|US|VE)",
+- locale, G_REGEX_ANCHORED, G_REGEX_MATCH_ANCHORED))
+- paper_size = g_strdup ("Letter");
++ /* Set default PaperSize according to the locale
++ * FIXME: Handle more than A4 and Letter:
++ * https://bugzilla.gnome.org/show_bug.cgi?id=660769 */
++ paper_size = gtk_paper_size_get_default ();
++ if (g_str_equal (paper_size, GTK_PAPER_NAME_LETTER))
++ paper_size = "Letter";
+ else
+- paper_size = g_strdup ("A4");
++ paper_size = "A4";
+
+ if (ppd_file_name) {
+ ppd_file = ppdOpenFile (ppd_file_name);
+@@ -842,7 +832,6 @@ set_default_paper_size (const gchar *printer_name,
+ g_strfreev (value);
+ }
+
+- g_free (paper_size);
+ g_object_unref (proxy);
+ }
+
+--
+1.7.7
+
diff --git a/gnome-base/gnome-settings-daemon/files/3.2.0/0009-power-Do-not-revert-to-the-pre-idle-brightness-if-id.patch b/gnome-base/gnome-settings-daemon/files/3.2.0/0009-power-Do-not-revert-to-the-pre-idle-brightness-if-id.patch
new file mode 100644
index 00000000..81e28b42
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/files/3.2.0/0009-power-Do-not-revert-to-the-pre-idle-brightness-if-id.patch
@@ -0,0 +1,33 @@
+From 27bf0e2901e2281143f144324b151a40654f6a5b Mon Sep 17 00:00:00 2001
+From: Richard Hughes <richard@hughsie.com>
+Date: Thu, 29 Sep 2011 14:32:17 +0100
+Subject: [PATCH 2/8] power: Do not revert to the pre-idle brightness if idle
+ dimming is disabled
+
+We want to set manager->priv->pre_dim_brightness = -1 to indicate that we're
+restored the value and that no further restoration is required, as the user may
+have already altered the level.
+
+This will only happen if you disable dimming at runtime after having dimmed at
+least once.
+
+Resolves https://bugzilla.gnome.org/show_bug.cgi?id=660434
+---
+ plugins/power/gsd-power-manager.c | 1 +
+ 1 files changed, 1 insertions(+), 0 deletions(-)
+
+diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
+index 370d90d..a1bc213 100644
+--- a/plugins/power/gsd-power-manager.c
++++ b/plugins/power/gsd-power-manager.c
+@@ -2756,6 +2756,7 @@ idle_set_mode (GsdPowerManager *manager, GsdPowerIdleMode mode)
+ g_error_free (error);
+ return;
+ }
++ manager->priv->pre_dim_brightness = -1;
+ }
+ }
+ }
+--
+1.7.7
+
diff --git a/gnome-base/gnome-settings-daemon/files/3.2.0/0010-color-Do-not-load-all-the-color-devices-twice-at-sta.patch b/gnome-base/gnome-settings-daemon/files/3.2.0/0010-color-Do-not-load-all-the-color-devices-twice-at-sta.patch
new file mode 100644
index 00000000..6160d643
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/files/3.2.0/0010-color-Do-not-load-all-the-color-devices-twice-at-sta.patch
@@ -0,0 +1,76 @@
+From 46347223c475eb6ca1a4d4caa3f63b9302cfe8d9 Mon Sep 17 00:00:00 2001
+From: Richard Hughes <richard@hughsie.com>
+Date: Fri, 30 Sep 2011 12:21:54 +0100
+Subject: [PATCH 3/8] color: Do not load all the color devices twice at
+ startup
+
+If the color plugin was the first thing to use GnomeSettingsSession then we'll
+get an unknown->active transision when starting up, and we'll try to re-assign
+all the devices again.
+
+This speeds up loading of the color plugin typically by ~250ms, or quite a bit
+more if you have lots of devices like me.
+---
+ plugins/color/gsd-color-manager.c | 24 +++++++++++++++++-------
+ 1 files changed, 17 insertions(+), 7 deletions(-)
+
+diff --git a/plugins/color/gsd-color-manager.c b/plugins/color/gsd-color-manager.c
+index 14a4576..b4b6b3b 100644
+--- a/plugins/color/gsd-color-manager.c
++++ b/plugins/color/gsd-color-manager.c
+@@ -58,6 +58,7 @@ struct GsdColorManagerPrivate
+ GnomeRRScreen *x11_screen;
+ GHashTable *edid_cache;
+ GdkWindow *gdk_window;
++ GnomeSettingsSessionState session_state;
+ };
+
+ enum {
+@@ -1950,21 +1951,29 @@ gcm_session_active_changed_cb (GnomeSettingsSession *session,
+ GParamSpec *pspec,
+ GsdColorManager *manager)
+ {
+- GnomeSettingsSessionState state;
++ GnomeSettingsSessionState state_new;
++ GsdColorManagerPrivate *priv = manager->priv;
+
+ /* not yet connected to the daemon */
+- if (!cd_client_get_connected (manager->priv->client))
++ if (!cd_client_get_connected (priv->client))
+ return;
+
+- /* when doing the fast-user-switch into a new account, load the
+- * new users chosen profiles */
+- state = gnome_settings_session_get_state (session);
+- if (state == GNOME_SETTINGS_SESSION_STATE_ACTIVE) {
+- g_debug ("Done switch to new account, reload devices");
++ /* When doing the fast-user-switch into a new account, load the
++ * new users chosen profiles.
++ *
++ * If this is the first time the GnomeSettingsSession has been
++ * loaded, then we'll get a change from unknown to active
++ * and we want to avoid reprobing the devices for that.
++ */
++ state_new = gnome_settings_session_get_state (session);
++ if (priv->session_state != GNOME_SETTINGS_SESSION_STATE_UNKNOWN &&
++ state_new == GNOME_SETTINGS_SESSION_STATE_ACTIVE) {
++ g_warning ("Done switch to new account, reload devices");
+ cd_client_get_devices (manager->priv->client, NULL,
+ gcm_session_get_devices_cb,
+ manager);
+ }
++ priv->session_state = state_new;
+ }
+
+ static void
+@@ -2020,6 +2029,7 @@ gsd_color_manager_init (GsdColorManager *manager)
+
+ /* track the active session */
+ priv->session = gnome_settings_session_new ();
++ priv->session_state = gnome_settings_session_get_state (priv->session);
+ g_signal_connect (priv->session, "notify::state",
+ G_CALLBACK (gcm_session_active_changed_cb),
+ manager);
+--
+1.7.7
+
diff --git a/gnome-base/gnome-settings-daemon/files/3.2.0/0011-color-Don-t-assign-the-same-device-more-than-once-at.patch b/gnome-base/gnome-settings-daemon/files/3.2.0/0011-color-Don-t-assign-the-same-device-more-than-once-at.patch
new file mode 100644
index 00000000..b381381b
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/files/3.2.0/0011-color-Don-t-assign-the-same-device-more-than-once-at.patch
@@ -0,0 +1,91 @@
+From 9f14a09b2830fa4f7e6a88c656c8b991f93afae2 Mon Sep 17 00:00:00 2001
+From: Richard Hughes <richard@hughsie.com>
+Date: Fri, 30 Sep 2011 14:05:45 +0100
+Subject: [PATCH 4/8] color: Don't assign the same device more than once at
+ startup
+
+In the color plugin at startup there's a lot going on async, such as
+registering devices and monitoring profiles for changes. As it's all happening
+at the "same time", and possibly out-of-order we can't order things linearly in
+the startup phase.
+
+This could mean we connect to a device and then straight away get the device
+list (which also connects to the device) which means we're doing something twice
+we only really need to do once.
+
+Do solve this, use a simple hash table to keep track of what devices are being
+assigned at startup. A device gets removed from the cache as soon as it's been
+connected to, so we don't end up processing old data.
+
+This speeds up the color plugin start by ~280ms if you have two display devices.
+---
+ plugins/color/gsd-color-manager.c | 25 +++++++++++++++++++++++++
+ 1 files changed, 25 insertions(+), 0 deletions(-)
+
+diff --git a/plugins/color/gsd-color-manager.c b/plugins/color/gsd-color-manager.c
+index b4b6b3b..4f5f8bc 100644
+--- a/plugins/color/gsd-color-manager.c
++++ b/plugins/color/gsd-color-manager.c
+@@ -59,6 +59,7 @@ struct GsdColorManagerPrivate
+ GHashTable *edid_cache;
+ GdkWindow *gdk_window;
+ GnomeSettingsSessionState session_state;
++ GHashTable *device_assign_hash;
+ };
+
+ enum {
+@@ -1019,6 +1020,10 @@ gcm_session_device_assign_connect_cb (GObject *object,
+ GsdColorManager *manager = GSD_COLOR_MANAGER (user_data);
+ GsdColorManagerPrivate *priv = manager->priv;
+
++ /* remove from assign array */
++ g_hash_table_remove (manager->priv->device_assign_hash,
++ cd_device_get_object_path (device));
++
+ /* get properties */
+ ret = cd_device_connect_finish (device, res, &error);
+ if (!ret) {
+@@ -1129,6 +1134,19 @@ out:
+ static void
+ gcm_session_device_assign (GsdColorManager *manager, CdDevice *device)
+ {
++ const gchar *key;
++ gpointer found;
++
++ /* are we already assigning this device */
++ key = cd_device_get_object_path (device);
++ found = g_hash_table_lookup (manager->priv->device_assign_hash, key);
++ if (found != NULL) {
++ g_debug ("assign for %s already in progress", key);
++ return;
++ }
++ g_hash_table_insert (manager->priv->device_assign_hash,
++ g_strdup (key),
++ GINT_TO_POINTER (TRUE));
+ cd_device_connect (device,
+ NULL,
+ gcm_session_device_assign_connect_cb,
+@@ -2043,6 +2061,12 @@ gsd_color_manager_init (GsdColorManager *manager)
+ g_free,
+ g_object_unref);
+
++ /* we don't want to assign devices multiple times at startup */
++ priv->device_assign_hash = g_hash_table_new_full (g_str_hash,
++ g_str_equal,
++ g_free,
++ NULL);
++
+ /* use DMI data for internal panels */
+ priv->dmi = gcm_dmi_new ();
+
+@@ -2086,6 +2110,7 @@ gsd_color_manager_finalize (GObject *object)
+ g_object_unref (manager->priv->dmi);
+ g_object_unref (manager->priv->session);
+ g_hash_table_destroy (manager->priv->edid_cache);
++ g_hash_table_destroy (manager->priv->device_assign_hash);
+ if (manager->priv->x11_screen != NULL)
+ g_object_unref (manager->priv->x11_screen);
+
+--
+1.7.7
+
diff --git a/gnome-base/gnome-settings-daemon/files/3.2.0/0012-color-Fix-critical-warning-if-the-user-disables-the-.patch b/gnome-base/gnome-settings-daemon/files/3.2.0/0012-color-Fix-critical-warning-if-the-user-disables-the-.patch
new file mode 100644
index 00000000..9868d0ba
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/files/3.2.0/0012-color-Fix-critical-warning-if-the-user-disables-the-.patch
@@ -0,0 +1,91 @@
+From dd465a1a294c9af476261dcba7bee11e9022e4eb Mon Sep 17 00:00:00 2001
+From: Richard Hughes <richard@hughsie.com>
+Date: Mon, 3 Oct 2011 15:09:15 +0100
+Subject: [PATCH 5/8] color: Fix critical warning if the user disables the
+ internal LCD screen
+
+Note: this fix also applies to any output we've disabled but left connected.
+---
+ plugins/color/gsd-color-manager.c | 35 +++++++++++++++++++++++++++++++++--
+ 1 files changed, 33 insertions(+), 2 deletions(-)
+
+diff --git a/plugins/color/gsd-color-manager.c b/plugins/color/gsd-color-manager.c
+index 4f5f8bc..c2221e9 100644
+--- a/plugins/color/gsd-color-manager.c
++++ b/plugins/color/gsd-color-manager.c
+@@ -736,6 +736,10 @@ gcm_session_generate_vcgt (CdProfile *profile, guint size)
+ const gchar *filename;
+ cmsHPROFILE lcms_profile = NULL;
+
++ /* invalid size */
++ if (size == 0)
++ goto out;
++
+ /* not an actual profile */
+ filename = cd_profile_get_filename (profile);
+ if (filename == NULL)
+@@ -776,6 +780,8 @@ gnome_rr_output_get_gamma_size (GnomeRROutput *output)
+ gint len = 0;
+
+ crtc = gnome_rr_output_get_crtc (output);
++ if (crtc == NULL)
++ return 0;
+ gnome_rr_crtc_get_gamma (crtc,
+ &len,
+ NULL, NULL, NULL);
+@@ -818,6 +824,15 @@ gcm_session_output_set_gamma (GnomeRROutput *output,
+
+ /* send to LUT */
+ crtc = gnome_rr_output_get_crtc (output);
++ if (crtc == NULL) {
++ ret = FALSE;
++ g_set_error (error,
++ GSD_COLOR_MANAGER_ERROR,
++ GSD_COLOR_MANAGER_ERROR_FAILED,
++ "failed to get ctrc for %s",
++ gnome_rr_output_get_name (output));
++ goto out;
++ }
+ gnome_rr_crtc_set_gamma (crtc, array->len,
+ red, green, blue);
+ out:
+@@ -833,11 +848,19 @@ gcm_session_device_set_gamma (GnomeRROutput *output,
+ GError **error)
+ {
+ gboolean ret = FALSE;
++ guint size;
+ GPtrArray *clut = NULL;
+
+ /* create a lookup table */
+- clut = gcm_session_generate_vcgt (profile,
+- gnome_rr_output_get_gamma_size (output));
++ size = gnome_rr_output_get_gamma_size (output);
++ if (size == 0) {
++ g_set_error_literal (error,
++ GSD_COLOR_MANAGER_ERROR,
++ GSD_COLOR_MANAGER_ERROR_FAILED,
++ "gamma size is zero");
++ goto out;
++ }
++ clut = gcm_session_generate_vcgt (profile, size);
+ if (clut == NULL) {
+ g_set_error_literal (error,
+ GSD_COLOR_MANAGER_ERROR,
+@@ -871,6 +894,14 @@ gcm_session_device_reset_gamma (GnomeRROutput *output,
+ g_debug ("falling back to dummy ramp");
+ clut = g_ptr_array_new_with_free_func (g_free);
+ size = gnome_rr_output_get_gamma_size (output);
++ if (size == 0) {
++ ret = FALSE;
++ g_set_error_literal (error,
++ GSD_COLOR_MANAGER_ERROR,
++ GSD_COLOR_MANAGER_ERROR_FAILED,
++ "gamma size is zero");
++ goto out;
++ }
+ for (i = 0; i < size; i++) {
+ value = (i * 0xffff) / (size - 1);
+ data = g_new0 (GnomeRROutputClutItem, 1);
+--
+1.7.7
+
diff --git a/gnome-base/gnome-settings-daemon/files/3.2.0/0013-color-Reset-the-gamma-tables-when-the-screen-configu.patch b/gnome-base/gnome-settings-daemon/files/3.2.0/0013-color-Reset-the-gamma-tables-when-the-screen-configu.patch
new file mode 100644
index 00000000..65e372be
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/files/3.2.0/0013-color-Reset-the-gamma-tables-when-the-screen-configu.patch
@@ -0,0 +1,103 @@
+From a837c01a6c0cbbb0a135b4d130ecec027b2dcb8a Mon Sep 17 00:00:00 2001
+From: Richard Hughes <richard@hughsie.com>
+Date: Tue, 27 Sep 2011 18:16:44 +0100
+Subject: [PATCH 6/8] color: Reset the gamma tables when the screen
+ configuration changes
+
+We have to reset the gamma tables each time, as if the primary output
+has changed then different crtcs are going to be used.
+
+This prevents the profile VCGT being used on the wrong monitor.
+
+Resolves https://bugzilla.gnome.org/show_bug.cgi?id=660164
+---
+ plugins/color/gsd-color-manager.c | 66 +++++++++++++++++++++++++++++++++++++
+ 1 files changed, 66 insertions(+), 0 deletions(-)
+
+diff --git a/plugins/color/gsd-color-manager.c b/plugins/color/gsd-color-manager.c
+index c2221e9..6fe086e 100644
+--- a/plugins/color/gsd-color-manager.c
++++ b/plugins/color/gsd-color-manager.c
+@@ -1398,6 +1398,69 @@ out:
+ }
+
+ static void
++gcm_session_profile_gamma_find_device_cb (GObject *object,
++ GAsyncResult *res,
++ gpointer user_data)
++{
++ CdClient *client = CD_CLIENT (object);
++ CdDevice *device = NULL;
++ GError *error = NULL;
++ GsdColorManager *manager = GSD_COLOR_MANAGER (user_data);
++
++ device = cd_client_find_device_by_property_finish (client,
++ res,
++ &error);
++ if (device == NULL) {
++ g_warning ("not found device %s: %s",
++ cd_device_get_id (device),
++ error->message);
++ g_error_free (error);
++ goto out;
++ }
++
++ /* get properties */
++ cd_device_connect (device,
++ NULL,
++ gcm_session_device_assign_connect_cb,
++ manager);
++out:
++ if (device != NULL)
++ g_object_unref (device);
++}
++
++/* We have to reset the gamma tables each time as if the primary output
++ * has changed then different crtcs are going to be used.
++ * See https://bugzilla.gnome.org/show_bug.cgi?id=660164 for an example */
++static void
++gnome_rr_screen_output_changed_cb (GnomeRRScreen *screen,
++ GsdColorManager *manager)
++{
++ GnomeRROutput **outputs;
++ GsdColorManagerPrivate *priv = manager->priv;
++ guint i;
++
++ /* get X11 outputs */
++ outputs = gnome_rr_screen_list_outputs (priv->x11_screen);
++ if (outputs == NULL) {
++ g_warning ("failed to get outputs");
++ return;
++ }
++ for (i = 0; outputs[i] != NULL; i++) {
++ if (!gnome_rr_output_is_connected (outputs[i]))
++ continue;
++
++ /* get CdDevice for this output */
++ cd_client_find_device_by_property (manager->priv->client,
++ CD_DEVICE_METADATA_XRANDR_NAME,
++ gnome_rr_output_get_name (outputs[i]),
++ NULL,
++ gcm_session_profile_gamma_find_device_cb,
++ manager);
++ }
++
++}
++
++static void
+ gcm_session_client_connect_cb (GObject *source_object,
+ GAsyncResult *res,
+ gpointer user_data)
+@@ -1456,6 +1519,9 @@ gcm_session_client_connect_cb (GObject *source_object,
+ g_signal_connect (priv->x11_screen, "output-disconnected",
+ G_CALLBACK (gnome_rr_screen_output_removed_cb),
+ manager);
++ g_signal_connect (priv->x11_screen, "changed",
++ G_CALLBACK (gnome_rr_screen_output_changed_cb),
++ manager);
+
+ g_signal_connect (priv->client, "profile-added",
+ G_CALLBACK (gcm_session_profile_added_assign_cb),
+--
+1.7.7
+
diff --git a/gnome-base/gnome-settings-daemon/files/3.2.0/0014-power-Ensure-the-DPMS-state-is-on-at-startup.patch b/gnome-base/gnome-settings-daemon/files/3.2.0/0014-power-Ensure-the-DPMS-state-is-on-at-startup.patch
new file mode 100644
index 00000000..704729ad
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/files/3.2.0/0014-power-Ensure-the-DPMS-state-is-on-at-startup.patch
@@ -0,0 +1,42 @@
+From 47b210a74dc68917736730c11abc97a0650d4cb2 Mon Sep 17 00:00:00 2001
+From: Richard Hughes <richard@hughsie.com>
+Date: Mon, 3 Oct 2011 16:31:07 +0100
+Subject: [PATCH 7/8] power: Ensure the DPMS state is 'on' at startup
+
+This also has the side-effect of disabling the default DPMS timeouts the session may have set.
+
+Resolves https://bugzilla.gnome.org/show_bug.cgi?id=660482
+---
+ plugins/power/gsd-power-manager.c | 9 +++++++++
+ 1 files changed, 9 insertions(+), 0 deletions(-)
+
+diff --git a/plugins/power/gsd-power-manager.c b/plugins/power/gsd-power-manager.c
+index a1bc213..ae7cfb3 100644
+--- a/plugins/power/gsd-power-manager.c
++++ b/plugins/power/gsd-power-manager.c
+@@ -3293,6 +3293,8 @@ gboolean
+ gsd_power_manager_start (GsdPowerManager *manager,
+ GError **error)
+ {
++ gboolean ret;
++
+ g_debug ("Starting power manager");
+ gnome_settings_profile_start (NULL);
+
+@@ -3440,6 +3442,13 @@ gsd_power_manager_start (GsdPowerManager *manager,
+ if (manager->priv->x11_screen == NULL)
+ return FALSE;
+
++ /* ensure the default dpms timeouts are cleared */
++ ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen,
++ GNOME_RR_DPMS_ON,
++ error);
++ if (!ret)
++ return FALSE;
++
+ /* coldplug the engine */
+ engine_coldplug (manager);
+ idle_evaluate (manager);
+--
+1.7.7
+
diff --git a/gnome-base/gnome-settings-daemon/files/3.2.0/0015-color-Fix-make-check-by-including-lm-for-powf.patch b/gnome-base/gnome-settings-daemon/files/3.2.0/0015-color-Fix-make-check-by-including-lm-for-powf.patch
new file mode 100644
index 00000000..32713983
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/files/3.2.0/0015-color-Fix-make-check-by-including-lm-for-powf.patch
@@ -0,0 +1,26 @@
+From 153950e1a5d3ec61be5275c8286067561cfd3ffc Mon Sep 17 00:00:00 2001
+From: Richard Hughes <richard@hughsie.com>
+Date: Mon, 3 Oct 2011 17:53:49 +0100
+Subject: [PATCH 8/8] color: Fix 'make check' by including -lm for powf()
+
+---
+ plugins/color/Makefile.am | 3 ++-
+ 1 files changed, 2 insertions(+), 1 deletions(-)
+
+diff --git a/plugins/color/Makefile.am b/plugins/color/Makefile.am
+index 6d80602..fd68ac0 100644
+--- a/plugins/color/Makefile.am
++++ b/plugins/color/Makefile.am
+@@ -69,7 +69,8 @@ gcm_self_test_SOURCES = \
+ gcm_self_test_LDADD = \
+ $(COLORD_LIBS) \
+ $(LCMS_LIBS) \
+- $(SETTINGS_PLUGIN_LIBS)
++ $(SETTINGS_PLUGIN_LIBS) \
++ -lm
+
+ TESTS = gcm-self-test
+
+--
+1.7.7
+
diff --git a/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.2.0-color-unbreak-loading-profiles.patch b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.2.0-color-unbreak-loading-profiles.patch
new file mode 100644
index 00000000..370cfc5e
--- /dev/null
+++ b/gnome-base/gnome-settings-daemon/files/gnome-settings-daemon-3.2.0-color-unbreak-loading-profiles.patch
@@ -0,0 +1,41 @@
+From e46d34f5bd9b0260a204d5f8a9d23c747b61923f Mon Sep 17 00:00:00 2001
+From: Cosimo Cecchi <cosimoc@gnome.org>
+Date: Mon, 3 Oct 2011 10:02:34 -0400
+Subject: [PATCH] color: unbreak loading profiles at startup
+
+A recent commit broke color profile loading at startup if the profile
+directory exists already. Fix this.
+
+https://bugzilla.gnome.org/show_bug.cgi?id=660790
+
+Signed-off-by: Richard Hughes <richard@hughsie.com>
+
+[Alexandre Rostovtsev <tetromino@gmail.com>: backported to 3.2]
+---
+ plugins/color/gcm-profile-store.c | 5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/plugins/color/gcm-profile-store.c b/plugins/color/gcm-profile-store.c
+index 3dde406..f8b0889 100644
+--- a/plugins/color/gcm-profile-store.c
++++ b/plugins/color/gcm-profile-store.c
+@@ -445,13 +445,14 @@ 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);
+- if (!ret) {
++ if (!ret &&
++ !g_error_matches (error, G_IO_ERROR, G_IO_ERROR_EXISTS)) {
+ g_warning ("failed to create directory on startup: %s", error->message);
+- g_error_free (error);
+ } else {
+ gcm_profile_store_search_path (profile_store, path, 0);
+ }
+ g_free (path);
++ g_clear_error (&error);
+
+ /* get per-user profiles from obsolete location */
+ path = g_build_filename (g_get_home_dir (), ".color", "icc", NULL);
+--
+1.7.7
+