rpms/gnome-desktop/devel gnome-desktop-2.24.0-fade.patch, 1.3, 1.4 gnome-desktop.spec, 1.175, 1.176

Ray Strode rstrode at fedoraproject.org
Wed Oct 15 15:17:26 UTC 2008


Author: rstrode

Update of /cvs/pkgs/rpms/gnome-desktop/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv16523

Modified Files:
	gnome-desktop-2.24.0-fade.patch gnome-desktop.spec 
Log Message:
- Add new api for getting the root window pixmap
- Pass start window to crossfade "finished" signal


gnome-desktop-2.24.0-fade.patch:

Index: gnome-desktop-2.24.0-fade.patch
===================================================================
RCS file: /cvs/pkgs/rpms/gnome-desktop/devel/gnome-desktop-2.24.0-fade.patch,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- gnome-desktop-2.24.0-fade.patch	14 Oct 2008 20:07:02 -0000	1.3
+++ gnome-desktop-2.24.0-fade.patch	15 Oct 2008 15:17:25 -0000	1.4
@@ -1,6 +1,6 @@
-diff -up gnome-desktop-2.24.0/libgnome-desktop/gnome-bg.c.fade gnome-desktop-2.24.0/libgnome-desktop/gnome-bg.c
+diff -upb gnome-desktop-2.24.0/libgnome-desktop/gnome-bg.c.fade gnome-desktop-2.24.0/libgnome-desktop/gnome-bg.c
 --- gnome-desktop-2.24.0/libgnome-desktop/gnome-bg.c.fade	2008-09-22 17:01:45.000000000 -0400
-+++ gnome-desktop-2.24.0/libgnome-desktop/gnome-bg.c	2008-10-14 16:01:38.000000000 -0400
++++ gnome-desktop-2.24.0/libgnome-desktop/gnome-bg.c	2008-10-15 11:12:56.000000000 -0400
 @@ -37,11 +37,15 @@ Author: Soren Sandmann <sandmann at redhat.
  #include <X11/Xlib.h>
  #include <X11/Xatom.h>
@@ -113,9 +113,24 @@
  static void
  draw_color (GnomeBG *bg, GdkPixbuf *dest)
  {
-@@ -1012,52 +1063,86 @@ gnome_bg_create_thumbnail (GnomeBG      
+@@ -1011,15 +1062,74 @@ gnome_bg_create_thumbnail (GnomeBG      
+ 	return result;
  }
  
++GdkPixmap *
++gnome_bg_get_pixmap_from_root (GdkScreen *screen)
++{
++	int      result;
++	gint     format;
++	gulong   nitems;
++	gulong   bytes_after;
++	guchar  *data;
++	Atom     type;
++	Display *display;
++	int      screen_num;
++	GdkPixmap *pixmap;
++
++        display = GDK_DISPLAY_XDISPLAY (gdk_screen_get_display (screen));
  
 -/* Set the root pixmap, and properties pointing to it. We
 - * do this atomically with XGrabServer to make sure that
@@ -125,108 +140,83 @@
 - */
 -void 
 -gnome_bg_set_pixmap_as_root (GdkScreen *screen, GdkPixmap *pixmap)
-+static GdkPixmap * 
++	result = XGetWindowProperty (display,
++		RootWindow (display, screen_num),
++		gdk_x11_get_xatom_by_name ("_XROOTPMAP_ID"),
++		0L, 1L, False, XA_PIXMAP,
++		&type, &format, &nitems, &bytes_after,
++		&data);
++	pixmap = NULL;
++
++	if (data != NULL) {
++	    if (result == Success && type == XA_PIXMAP &&
++		    format == 32 && nitems == 1) {
++		GdkPixmap *source_pixmap;
++		int width, height;
++		cairo_t *cr;
++		cairo_pattern_t *pattern;
++
++		source_pixmap = gdk_pixmap_foreign_new (*(Pixmap *) data);
++		gdk_drawable_set_colormap (source_pixmap, gdk_screen_get_default_colormap (screen));
++
++		width = gdk_screen_get_width (screen);
++		height = gdk_screen_get_width (screen);
++
++		pixmap = gdk_pixmap_new (source_pixmap != NULL? source_pixmap :
++                                         gdk_screen_get_root_window (screen),
++                                         width, height, -1);
++
++		cr = gdk_cairo_create (pixmap);
++                if (source_pixmap != NULL) {
++			gdk_cairo_set_source_pixmap (cr, source_pixmap, 0, 0);
++			pattern = cairo_get_source (cr);
++			cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT);
++                } else {
++			cairo_set_source_rgb (cr, 0.0, 0.0, 0.0);
++		}
++		cairo_paint (cr);
++
++		if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) {
++		    g_object_unref (pixmap);
++		    pixmap = NULL;
++		}
++		cairo_destroy (cr);
++
++		g_object_unref (source_pixmap);
++	    }
++	    XFree (data);
++	}
++
++	return pixmap;
++}
++
++static void
 +gnome_bg_set_root_pixmap_id (GdkScreen *screen,
-+			     GdkPixmap *pixmap,
-+			     gboolean   copy_old_root)
++			     GdkPixmap *pixmap)
  {
  	int      result;
  	gint     format;
- 	gulong   nitems;
- 	gulong   bytes_after;
--	guchar  *data_esetroot;
-+	guchar  *data;
- 	Pixmap   pixmap_id;
- 	Atom     type;
+@@ -1031,15 +1141,10 @@ gnome_bg_set_pixmap_as_root (GdkScreen *
  	Display *display;
  	int      screen_num;
--	
+ 	
 -	g_return_if_fail (screen != NULL);
 -	g_return_if_fail (pixmap != NULL);
-+	GdkPixmap *old_root_pixmap;
- 	
+-	
  	screen_num = gdk_screen_get_number (screen);
 -	
--	data_esetroot = NULL;
-+	old_root_pixmap = NULL;
-+	data = NULL;
- 	display = GDK_DISPLAY_XDISPLAY (gdk_screen_get_display (screen));
+ 	data_esetroot = NULL;
+-	display = GDK_DISPLAY_XDISPLAY (gdk_screen_get_display (screen));
  	
 -	XGrabServer (display);
-+	if (copy_old_root) {
-+		result = XGetWindowProperty (display,
-+					    RootWindow (display, screen_num),
-+					    gdk_x11_get_xatom_by_name ("_XROOTPMAP_ID"),
-+					    0L, 1L, False, XA_PIXMAP,
-+					    &type, &format, &nitems, &bytes_after,
-+					    &data);
-+
-+		if (data != NULL) {
-+			if (result == Success && type == XA_PIXMAP &&
-+			    format == 32 && nitems == 1) {
-+				GdkPixmap *source_pixmap;
-+				int width, height;
-+				cairo_t *cr;
-+				cairo_pattern_t *pattern;
-+
-+				source_pixmap = gdk_pixmap_foreign_new (*(Pixmap *) data);
-+				gdk_drawable_set_colormap (source_pixmap, gdk_screen_get_default_colormap (screen));
-+
-+				width = gdk_screen_get_width (screen);
-+				height = gdk_screen_get_width (screen);
-+
-+				old_root_pixmap = gdk_pixmap_new (source_pixmap, width, height, -1);
-+
-+				cr = gdk_cairo_create (old_root_pixmap);
-+				gdk_cairo_set_source_pixmap (cr, source_pixmap, 0, 0);
-+				pattern = cairo_get_source (cr);
-+				cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT);
-+				cairo_paint (cr);
-+
-+				if (cairo_status (cr) != CAIRO_STATUS_SUCCESS) {
-+					g_object_unref (old_root_pixmap);
-+					old_root_pixmap = NULL;
-+				}
-+				cairo_destroy (cr);
-+
-+				g_object_unref (source_pixmap);
-+			}
-+			XFree (data);
-+	    }
-+	}
++	display = GDK_DISPLAY_XDISPLAY (gdk_screen_get_display (screen));
  	
  	result = XGetWindowProperty (
  		display, RootWindow (display, screen_num),
- 		gdk_x11_get_xatom_by_name ("ESETROOT_PMAP_ID"),
- 		0L, 1L, False, XA_PIXMAP,
- 		&type, &format, &nitems, &bytes_after,
--		&data_esetroot);
-+		&data);
- 	
--	if (data_esetroot != NULL) {
-+	if (data!= NULL) {
- 		if (result == Success && type == XA_PIXMAP &&
- 		    format == 32 &&
- 		    nitems == 1) {
- 			gdk_error_trap_push ();
--			XKillClient (display, *(Pixmap *)data_esetroot);
-+			XKillClient (display, *(Pixmap *)data);
- 			gdk_flush ();
- 			gdk_error_trap_pop ();
- 		}
--		XFree (data_esetroot);
-+		XFree (data);
- 	}
- 	
- 	pixmap_id = GDK_WINDOW_XWINDOW (pixmap);
-@@ -1071,13 +1156,74 @@ gnome_bg_set_pixmap_as_root (GdkScreen *
+@@ -1070,14 +1175,72 @@ gnome_bg_set_pixmap_as_root (GdkScreen *
+ 			 gdk_x11_get_xatom_by_name ("_XROOTPMAP_ID"), XA_PIXMAP,
  			 32, PropModeReplace,
  			 (guchar *) &pixmap_id, 1);
- 	
--	XSetWindowBackgroundPixmap (display, RootWindow (display, screen_num),
--				    pixmap_id);
--	XClearWindow (display, RootWindow (display, screen_num));
-+	return old_root_pixmap;
 +}
 +
 +/* Set the root pixmap, and properties pointing to it. We
@@ -240,27 +230,28 @@
 +{
 +	Display *display;
 +	int      screen_num;
- 	
--	XUngrabServer (display);
++	
 +	g_return_if_fail (screen != NULL);
 +	g_return_if_fail (pixmap != NULL);
- 	
++	
 +	screen_num = gdk_screen_get_number (screen);
 +	display = GDK_DISPLAY_XDISPLAY (gdk_screen_get_display (screen));
 +
 +	XGrabServer (display);
 +
-+	gnome_bg_set_root_pixmap_id (screen, pixmap, FALSE);
-+
-+	XSetWindowBackgroundPixmap (display, RootWindow (display, screen_num),
++	gnome_bg_set_root_pixmap_id (screen, pixmap);
+ 	
+ 	XSetWindowBackgroundPixmap (display, RootWindow (display, screen_num),
+-				    pixmap_id);
 +				    GDK_PIXMAP_XID (pixmap));
-+	XClearWindow (display, RootWindow (display, screen_num));
-+
- 	XFlush (display);
+ 	XClearWindow (display, RootWindow (display, screen_num));
+ 	
++	XFlush (display);
 +
-+	XUngrabServer (display);
+ 	XUngrabServer (display);
 +}
-+
+ 	
+-	XFlush (display);
 +GnomeBGCrossfade * 
 +gnome_bg_set_pixmap_as_root_with_crossfade (GdkScreen    *screen,
 +                                       GdkPixmap    *pixmap,
@@ -269,7 +260,6 @@
 +	GdkDisplay *display;
 +	GdkWindow *root_window;
 +	GdkPixmap *old_pixmap;
-+	int      screen_num;
 +	int      width, height;
 +	GnomeBGCrossfade *fade;
 +
@@ -285,8 +275,8 @@
 +
 +	display = gdk_screen_get_display (screen);
 +	gdk_x11_display_grab (display);
-+	old_pixmap = gnome_bg_set_root_pixmap_id (screen, pixmap, TRUE);
-+
++	old_pixmap = gnome_bg_get_pixmap_from_root (screen);
++	gnome_bg_set_root_pixmap_id (screen, pixmap);
 +	gnome_bg_crossfade_set_start_pixmap (fade, old_pixmap);
 +	gnome_bg_crossfade_set_end_pixmap (fade, pixmap);
 +	gdk_display_flush (display);
@@ -298,7 +288,7 @@
  }
  
  
-@@ -1343,7 +1489,7 @@ on_timeout (gpointer data)
+@@ -1343,7 +1506,7 @@ on_timeout (gpointer data)
  
  	bg->timeout_id = 0;
  	
@@ -307,9 +297,9 @@
  
  	return FALSE;
  }
-diff -up /dev/null gnome-desktop-2.24.0/libgnome-desktop/gnome-bg-crossfade.c
---- /dev/null	2008-10-14 09:46:12.473279410 -0400
-+++ gnome-desktop-2.24.0/libgnome-desktop/gnome-bg-crossfade.c	2008-10-14 15:21:15.000000000 -0400
+diff -upb /dev/null gnome-desktop-2.24.0/libgnome-desktop/gnome-bg-crossfade.c
+--- /dev/null	2008-10-15 05:19:06.472035468 -0400
++++ gnome-desktop-2.24.0/libgnome-desktop/gnome-bg-crossfade.c	2008-10-15 08:58:43.000000000 -0400
 @@ -0,0 +1,432 @@
 +/* gnome-bg-crossfade.h - fade window background between two pixmaps
 + *
@@ -488,8 +478,8 @@
 +	signals[FINISHED] = g_signal_new ("finished",
 +					  G_OBJECT_CLASS_TYPE (gobject_class),
 +					  G_SIGNAL_RUN_LAST, 0, NULL, NULL,
-+					  g_cclosure_marshal_VOID__VOID,
-+					  G_TYPE_NONE, 0);
++					  g_cclosure_marshal_VOID__OBJECT,
++					  G_TYPE_NONE, 1, G_TYPE_OBJECT);
 +
 +	g_type_class_add_private (gobject_class, sizeof (GnomeBGCrossfadePrivate));
 +}
@@ -514,7 +504,7 @@
 +}
 +
 +static GdkPixmap *
-+copy_pixmap (GdkPixmap *pixmap,
++tile_pixmap (GdkPixmap *pixmap,
 +	     int        width,
 +	     int        height)
 +{
@@ -532,7 +522,6 @@
 +		cairo_pattern_set_extend (pattern, CAIRO_EXTEND_REPEAT);
 +	} else {
 +		GtkStyle *style;
-+                sleep (30);
 +		style = gtk_widget_get_default_style ();
 +		gdk_cairo_set_source_color (cr, &style->bg[GTK_STATE_NORMAL]);
 +	}
@@ -559,7 +548,7 @@
 +		fade->priv->fading_pixmap = NULL;
 +	}
 +
-+	fade->priv->fading_pixmap = copy_pixmap (pixmap,
++	fade->priv->fading_pixmap = tile_pixmap (pixmap,
 +						 fade->priv->width,
 +						 fade->priv->height);
 +
@@ -577,7 +566,7 @@
 +		fade->priv->end_pixmap = NULL;
 +	}
 +
-+	fade->priv->end_pixmap = copy_pixmap (pixmap,
++	fade->priv->end_pixmap = tile_pixmap (pixmap,
 +					      fade->priv->width,
 +					      fade->priv->height);
 +
@@ -627,7 +616,6 @@
 +	cairo_status_t status;
 +
 +	g_return_val_if_fail (GNOME_IS_BG_CROSSFADE (fade), FALSE);
-+
 +	now = get_current_time ();
 +
 +	percent_done = (now - fade->priv->start_time) / .75;
@@ -655,6 +643,7 @@
 +	gdk_cairo_set_source_pixmap (cr, fade->priv->end_pixmap,
 +				     0.0, 0.0);
 +	cairo_paint_with_alpha (cr, percent_done);
++
 +	status = cairo_status (cr);
 +	cairo_destroy (cr);
 +
@@ -695,7 +684,7 @@
 +	}
 +
 +	fade->priv->timeout_id = 0;
-+	g_signal_emit (fade, signals[FINISHED], 0);
++	g_signal_emit (fade, signals[FINISHED], 0, fade->priv->window);
 +}
 +
 +void
@@ -710,8 +699,6 @@
 +	g_return_if_fail (fade->priv->end_pixmap != NULL);
 +	g_return_if_fail (!gnome_bg_crossfade_is_started (fade));
 +
-+	fade->priv->start_time = get_current_time ();
-+
 +	source = g_timeout_source_new (1000 / 60.0);
 +	g_source_set_callback (source,
 +			       (GSourceFunc) on_tick,
@@ -724,6 +711,9 @@
 +	gdk_window_set_back_pixmap (fade->priv->window,
 +				    fade->priv->fading_pixmap,
 +				    FALSE);
++        gdk_window_clear (fade->priv->window);
++        gdk_flush ();
++	fade->priv->start_time = get_current_time ();
 +}
 +
 +gboolean
@@ -743,10 +733,10 @@
 +		g_source_remove (fade->priv->timeout_id);
 +	}
 +}
-diff -up /dev/null gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/gnome-bg-crossfade.h
---- /dev/null	2008-10-14 09:46:12.473279410 -0400
-+++ gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/gnome-bg-crossfade.h	2008-10-14 15:21:15.000000000 -0400
-@@ -0,0 +1,79 @@
+diff -upb /dev/null gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/gnome-bg-crossfade.h
+--- /dev/null	2008-10-15 05:19:06.472035468 -0400
++++ gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/gnome-bg-crossfade.h	2008-10-15 08:57:26.000000000 -0400
+@@ -0,0 +1,76 @@
 +/* gnome-bg-crossfade.h - fade window background between two pixmaps
 +
 +   Copyright 2008, Red Hat, Inc.
@@ -805,18 +795,15 @@
 +{
 +	GObjectClass parent_class;
 +
-+	void (* finished) (GnomeBGCrossfade *fade);
++	void (* finished) (GnomeBGCrossfade *fade, GdkWindow *window);
 +};
 +
 +GType             gnome_bg_crossfade_get_type              (void);
 +GnomeBGCrossfade *gnome_bg_crossfade_new (int width, int height);
-+gboolean          gnome_bg_crossfade_set_start_pixmap (GnomeBGCrossfade               *fade,
++gboolean          gnome_bg_crossfade_set_start_pixmap (GnomeBGCrossfade *fade,
 +                                                      GdkPixmap *pixmap);
-+
-+gboolean          gnome_bg_crossfade_set_end_pixmap (GnomeBGCrossfade               *fade,
++gboolean          gnome_bg_crossfade_set_end_pixmap (GnomeBGCrossfade *fade,
 +                                                    GdkPixmap *pixmap);
-+void              gnome_bg_crossfade_set_context (GnomeBGCrossfade *fade,
-+                                                  GMainContext *context);
 +void              gnome_bg_crossfade_start (GnomeBGCrossfade *fade,
 +                                            GdkWindow        *window,
 +                                            GMainContext     *context);
@@ -826,9 +813,9 @@
 +G_END_DECLS
 +
 +#endif
-diff -up gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/gnome-bg.h.fade gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/gnome-bg.h
+diff -upb gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/gnome-bg.h.fade gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/gnome-bg.h
 --- gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/gnome-bg.h.fade	2008-09-22 17:01:45.000000000 -0400
-+++ gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/gnome-bg.h	2008-10-14 15:21:15.000000000 -0400
++++ gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/gnome-bg.h	2008-10-14 17:49:44.000000000 -0400
 @@ -33,6 +33,8 @@
  #include <gdk/gdk.h>
  #include <gconf/gconf-client.h>
@@ -847,19 +834,20 @@
  void             gnome_bg_load_from_preferences (GnomeBG               *bg,
  						 GConfClient           *client);
  void             gnome_bg_save_to_preferences   (GnomeBG               *bg,
-@@ -109,6 +113,9 @@ gboolean         gnome_bg_changes_with_s
+@@ -109,6 +113,10 @@ gboolean         gnome_bg_changes_with_s
  void             gnome_bg_set_pixmap_as_root    (GdkScreen             *screen,
  						 GdkPixmap             *pixmap);
  
 +GnomeBGCrossfade *gnome_bg_set_pixmap_as_root_with_crossfade (GdkScreen *screen,
 +                                                              GdkPixmap *pixmap,
 +                                                              GMainContext *context);
++GdkPixmap *gnome_bg_get_pixmap_from_root (GdkScreen *screen);
  
  G_END_DECLS
  
-diff -up gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/Makefile.am.fade gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/Makefile.am
+diff -upb gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/Makefile.am.fade gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/Makefile.am
 --- gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/Makefile.am.fade	2008-09-22 17:01:45.000000000 -0400
-+++ gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/Makefile.am	2008-10-14 15:21:15.000000000 -0400
++++ gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/Makefile.am	2008-10-14 17:49:44.000000000 -0400
 @@ -3,6 +3,7 @@ libgnomeui_desktop_HEADERS =	\
  	gnome-ditem-edit.h	\
  	gnome-hint.h		\
@@ -868,9 +856,9 @@
  	gnome-rr.h		\
  	gnome-rr-config.h	\
  	gnome-rr-labeler.h
-diff -up gnome-desktop-2.24.0/libgnome-desktop/Makefile.am.fade gnome-desktop-2.24.0/libgnome-desktop/Makefile.am
+diff -upb gnome-desktop-2.24.0/libgnome-desktop/Makefile.am.fade gnome-desktop-2.24.0/libgnome-desktop/Makefile.am
 --- gnome-desktop-2.24.0/libgnome-desktop/Makefile.am.fade	2008-09-22 17:01:45.000000000 -0400
-+++ gnome-desktop-2.24.0/libgnome-desktop/Makefile.am	2008-10-14 15:21:15.000000000 -0400
++++ gnome-desktop-2.24.0/libgnome-desktop/Makefile.am	2008-10-14 17:49:44.000000000 -0400
 @@ -21,6 +21,7 @@ libgnome_desktop_2_la_SOURCES = \
  	gnome-ditem-edit.c	\
  	gnome-hint.c		\


Index: gnome-desktop.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gnome-desktop/devel/gnome-desktop.spec,v
retrieving revision 1.175
retrieving revision 1.176
diff -u -r1.175 -r1.176
--- gnome-desktop.spec	14 Oct 2008 20:07:02 -0000	1.175
+++ gnome-desktop.spec	15 Oct 2008 15:17:25 -0000	1.176
@@ -12,7 +12,7 @@
 Summary: Package containing code shared among gnome-panel, gnome-session, nautilus, etc
 Name: gnome-desktop
 Version: 2.24.0
-Release: 6%{?dist}
+Release: 7%{?dist}
 URL: http://www.gnome.org
 Source0: http://download.gnome.org/sources/gnome-desktop/2.24/%{name}-%{version}.tar.bz2
 License: GPLv2+ and LGPLv2+
@@ -126,6 +126,10 @@
 %doc %{_datadir}/gtk-doc/html/gnome-desktop/
 
 %changelog
+* Wed Oct 15 2008 Ray Strode <rstrode at redhat.com> - 2.24.0-7
+- Add new api for getting the root window pixmap
+- Pass start window to crossfade "finished" signal
+
 * Tue Oct 14 2008 Ray Strode <rstrode at redhat.com> - 2.24.0-6
 - Hold off on settings daemon cross fade if nautilus is going
   to do it anyway.  Grab the server while getting the initial




More information about the scm-commits mailing list