rpms/gnome-settings-daemon/F-12 gsd-screen-changed.patch, NONE, 1.1 gnome-settings-daemon.spec, 1.134, 1.135

Matthias Clasen mclasen at fedoraproject.org
Mon Nov 9 20:52:32 UTC 2009


Author: mclasen

Update of /cvs/pkgs/rpms/gnome-settings-daemon/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv6778

Modified Files:
	gnome-settings-daemon.spec 
Added Files:
	gsd-screen-changed.patch 
Log Message:
React to screen changes when drawing the desktop


gsd-screen-changed.patch:
 gsd-background-manager.c |   69 ++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 68 insertions(+), 1 deletion(-)

--- NEW FILE gsd-screen-changed.patch ---
diff -up gnome-settings-daemon-2.28.1/plugins/background/gsd-background-manager.c.screen-change gnome-settings-daemon-2.28.1/plugins/background/gsd-background-manager.c
--- gnome-settings-daemon-2.28.1/plugins/background/gsd-background-manager.c.screen-change	2009-05-03 14:15:30.000000000 -0400
+++ gnome-settings-daemon-2.28.1/plugins/background/gsd-background-manager.c	2009-11-09 15:38:32.005583997 -0500
@@ -47,6 +47,8 @@
 #include "gnome-settings-profile.h"
 #include "gsd-background-manager.h"
 
+#define NAUTILUS_SHOW_DESKTOP_KEY "/apps/nautilus/preferences/show_desktop"
+
 #define GSD_BACKGROUND_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), GSD_TYPE_BACKGROUND_MANAGER, GsdBackgroundManagerPrivate))
 
 struct GsdBackgroundManagerPrivate
@@ -330,6 +332,67 @@ draw_background_after_session_loads (Gsd
         manager->priv->dbus_connection = connection;
 }
 
+static void
+on_screen_size_changed (GdkScreen            *screen,
+                        GsdBackgroundManager *manager)
+{
+        gboolean nautilus_show_desktop;
+
+        nautilus_show_desktop = gconf_client_get_bool (manager->priv->client,
+                                                       NAUTILUS_SHOW_DESKTOP_KEY,
+                                                       NULL);
+
+        if (!nautilus_is_running () || !nautilus_show_desktop) {
+                if (manager->priv->bg == NULL) {
+                        setup_bg (manager);
+                }
+                draw_background (manager, FALSE);
+        }
+}
+
+static void
+disconnect_screen_signals (GsdBackgroundManager *manager)
+{
+        GdkDisplay *display;
+        int         i;
+        int         n_screens;
+
+        display = gdk_display_get_default ();
+        n_screens = gdk_display_get_n_screens (display);
+
+        for (i = 0; i < n_screens; ++i) {
+                GdkScreen *screen;
+                screen = gdk_display_get_screen (display, i);
+                g_signal_handlers_disconnect_by_func (screen,
+                                                      G_CALLBACK (on_screen_size_changed),
+                                                      manager);
+        }
+}
+
+static void
+connect_screen_signals (GsdBackgroundManager *manager)
+{
+        GdkDisplay *display;
+        int         i;
+        int         n_screens;
+
+        display = gdk_display_get_default ();
+        n_screens = gdk_display_get_n_screens (display);
+
+        for (i = 0; i < n_screens; ++i) {
+                GdkScreen *screen;
+                screen = gdk_display_get_screen (display, i);
+                g_signal_connect (screen,
+                                  "monitors-changed",
+                                  G_CALLBACK (on_screen_size_changed),
+                                  manager);
+                g_signal_connect (screen,
+                                  "size-changed",
+                                  G_CALLBACK (on_screen_size_changed),
+                                  manager);
+        }
+}
+
 gboolean
 gsd_background_manager_start (GsdBackgroundManager *manager,
                               GError              **error)
@@ -349,7 +412,7 @@ gsd_background_manager_start (GsdBackgro
 	 * nautilus overwrite it.
 	 */
         nautilus_show_desktop = gconf_client_get_bool (manager->priv->client,
-                                                       "/apps/nautilus/preferences/show_desktop",
+                                                       NAUTILUS_SHOW_DESKTOP_KEY,
                                                        NULL);
 
         if (!nautilus_show_desktop) {
@@ -358,6 +421,8 @@ gsd_background_manager_start (GsdBackgro
                 draw_background_after_session_loads (manager);
         }
 
+        connect_screen_signals (manager);
+
         gnome_settings_profile_end (NULL);
 
         return TRUE;
@@ -370,6 +435,8 @@ gsd_background_manager_stop (GsdBackgrou
 
         g_debug ("Stopping background manager");
 
+        disconnect_screen_signals (manager);
+
         if (manager->priv->dbus_connection != NULL) {
                 dbus_connection_remove_filter (manager->priv->dbus_connection,
                                                on_bus_message,


Index: gnome-settings-daemon.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gnome-settings-daemon/F-12/gnome-settings-daemon.spec,v
retrieving revision 1.134
retrieving revision 1.135
diff -u -p -r1.134 -r1.135
--- gnome-settings-daemon.spec	5 Nov 2009 22:26:51 -0000	1.134
+++ gnome-settings-daemon.spec	9 Nov 2009 20:52:32 -0000	1.135
@@ -1,6 +1,6 @@
 Name:		gnome-settings-daemon
 Version:	2.28.1
-Release:	6%{?dist}
+Release:	7%{?dist}
 Summary:	The daemon sharing settings from GNOME to GTK+/KDE applications
 
 Group:		System Environment/Daemons
@@ -35,16 +35,16 @@ BuildRequires:	libcanberra-devel
 # https://bugzilla.gnome.org/show_bug.cgi?id=596136
 Patch0: 0002-Use-a-rounded-instead-of-curved-rectangle.patch
 Patch1: 0003-Improve-the-media-keys-overlay-design.patch
-# https://bugzilla.gnome.org/show_bug.cgi?id=567249
-Patch4: 0001-Fix-bluriness-in-level-bar-and-popup.patch
-# https://bugzilla.gnome.org/show_bug.cgi?id=600770
-Patch5: 0001-Avoid-volumes-going-over-100.patch
-
 # https://bugzilla.redhat.com/show_bug.cgi?id=498249
 Patch2: left-handed-touchpad.patch
-
 # change font rendering
 Patch3: slight-hinting.patch
+# https://bugzilla.gnome.org/show_bug.cgi?id=567249
+Patch4: 0001-Fix-bluriness-in-level-bar-and-popup.patch
+# https://bugzilla.gnome.org/show_bug.cgi?id=600770
+Patch5: 0001-Avoid-volumes-going-over-100.patch
+# https://bugzilla.gnome.org/show_bug.cgi?id=601203
+Patch6: gsd-screen-changed.patch
 
 %description
 A daemon to share settings from GNOME to other applications. It also
@@ -69,6 +69,7 @@ developing applications that use %{name}
 %patch2 -p1 -b .left-handed-touchpad
 %patch3 -p1 -b .slight-hinting
 %patch5 -p1 -b .too-high-volume
+%patch6 -p1 -b .screen-change
 
 %build
 %configure --enable-static=no --enable-profiling --disable-esd
@@ -180,6 +181,9 @@ fi
 %{_libdir}/pkgconfig/gnome-settings-daemon.pc
 
 %changelog
+* Mon Nov  9 2009 Matthias Clasen <mclasen at redhat.com> 2.28.1-7
+- React to screen changes when showing the background (gnome 601203)
+
 * Thu Nov 05 2009 Bastien Nocera <bnocera at redhat.com> 2.28.1-6
 - Fix the volume going over 100% in the OSD
 




More information about the fedora-extras-commits mailing list