rpms/eel2/devel eel-2.24.0-fade.patch, 1.1, 1.2 eel2.spec, 1.103, 1.104

Ray Strode rstrode at fedoraproject.org
Wed Oct 15 15:48:32 UTC 2008


Author: rstrode

Update of /cvs/pkgs/rpms/eel2/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv22558

Modified Files:
	eel-2.24.0-fade.patch eel2.spec 
Log Message:
- Fix crossfade from login session now that g-s-d race
  is fixed.


eel-2.24.0-fade.patch:

Index: eel-2.24.0-fade.patch
===================================================================
RCS file: /cvs/pkgs/rpms/eel2/devel/eel-2.24.0-fade.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- eel-2.24.0-fade.patch	4 Oct 2008 21:13:49 -0000	1.1
+++ eel-2.24.0-fade.patch	15 Oct 2008 15:48:02 -0000	1.2
@@ -1,6 +1,6 @@
-diff -up eel-2.24.0/eel/eel-background.c.fade eel-2.24.0/eel/eel-background.c
+diff -upb eel-2.24.0/eel/eel-background.c.fade eel-2.24.0/eel/eel-background.c
 --- eel-2.24.0/eel/eel-background.c.fade	2008-09-08 17:26:14.000000000 -0400
-+++ eel-2.24.0/eel/eel-background.c	2008-10-04 17:09:02.000000000 -0400
++++ eel-2.24.0/eel/eel-background.c	2008-10-15 11:19:31.000000000 -0400
 @@ -43,6 +43,9 @@
  #include <stdio.h>
  #define GNOME_DESKTOP_USE_UNSTABLE_API
@@ -19,22 +19,41 @@
  	int background_entire_width;
  	int background_entire_height;
  	GdkColor default_color;
-@@ -182,6 +186,11 @@ eel_background_finalize (GObject *object
- 	background = EEL_BACKGROUND (object);
+@@ -189,6 +194,12 @@ eel_background_finalize (GObject *object
+ 		background->details->background_pixmap = NULL;
+ 	}
  
- 	g_free (background->details->color);
 +	if (background->details->fade != NULL) {
 +		gnome_bg_crossfade_stop (background->details->fade);
 +		g_object_unref (background->details->fade);
 +		background->details->fade = NULL;
 +	}
- 	eel_background_remove_current_image (background);
++
+ 	g_free (background->details);
  
- 	if (background->details->background_pixmap != NULL) {
-@@ -610,6 +619,26 @@ eel_background_reset (EelBackground *bac
- 	g_signal_emit (GTK_OBJECT (background), signals[RESET], 0);
+ 	EEL_CALL_PARENT (G_OBJECT_CLASS, finalize, (object));
+@@ -611,25 +622,66 @@ eel_background_reset (EelBackground *bac
  }
  
+ static void
++set_root_pixmap (EelBackground *background,
++                 GdkWindow     *window)
++{
++	GdkPixmap *pixmap;
++	GdkScreen *screen;
++	GdkColor color;
++	gboolean changes_with_size;
++
++	pixmap = eel_background_get_pixmap_and_color (background,
++						      window,
++						      &color,
++						      &changes_with_size);
++	screen = gdk_drawable_get_screen (window);
++
++	gnome_bg_set_pixmap_as_root (screen, pixmap);
++	g_object_unref (pixmap);
++}
++
 +static gboolean
 +fade_to_pixmap (EelBackground *background,
 +		 GdkWindow     *window,
@@ -49,40 +68,95 @@
 +		return FALSE;
 +	}
 +
-+	if (!gnome_bg_crossfade_is_started (background->details->fade))
++	if (!gnome_bg_crossfade_is_started (background->details->fade)) {
 +		gnome_bg_crossfade_start (background->details->fade, window, NULL);
++		if (background->details->is_desktop) {
++			g_signal_connect_swapped (background->details->fade,
++					          "finished",
++						  G_CALLBACK (set_root_pixmap), background);
++		}
++	}
 +
 +	return gnome_bg_crossfade_is_started (background->details->fade);
 +}
 +
- static void
++static void
  eel_background_set_up_widget (EelBackground *background, GtkWidget *widget)
  {
-@@ -644,14 +673,15 @@ eel_background_set_up_widget (EelBackgro
- 	} else {
+ 	GtkStyle *style;
+ 	GdkPixmap *pixmap;
+-	GdkPixmap *root_pixmap;
+ 	GdkColor color;
+ 	
+-	int window_width;
+-	int window_height;
+-	
+ 	GdkWindow *window;
+ 	gboolean changes_with_size;
++	gboolean in_fade;
++	gboolean was_started;
+ 
+ 	if (!GTK_WIDGET_REALIZED (widget)) {
+ 		return;
+ 	}
+ 
+-	drawable_get_adjusted_size (background, widget->window, &window_width, &window_height);
+-	
+ 	pixmap = eel_background_get_pixmap_and_color (background,
+ 						      widget->window,
+ 						      &color, 
+@@ -645,30 +697,26 @@ eel_background_set_up_widget (EelBackgro
  		window = widget->window;
  	}
--
--	if (!changes_with_size || background->details->is_desktop) {
--		gdk_window_set_back_pixmap (window, pixmap, FALSE);
--	} else {
--		gdk_window_set_back_pixmap (window, NULL, FALSE);
--		gdk_window_set_background (window, &color);
-+	if (background->details->fade == NULL ||
-+	    !fade_to_pixmap (background, window, pixmap)) {
-+		if (!changes_with_size || background->details->is_desktop) {
-+			gdk_window_set_back_pixmap (window, pixmap, FALSE);
-+		} else {
-+			gdk_window_set_back_pixmap (window, NULL, FALSE);
-+			gdk_window_set_background (window, &color);
-+		}
+ 
++	if (background->details->fade != NULL) {
++		in_fade = fade_to_pixmap (background, window, pixmap);
++	} else {
++		in_fade = FALSE;
++	}
++
++	if (!in_fade) {
+ 	if (!changes_with_size || background->details->is_desktop) {
+ 		gdk_window_set_back_pixmap (window, pixmap, FALSE);
+ 	} else {
+ 		gdk_window_set_back_pixmap (window, NULL, FALSE);
+ 		gdk_window_set_background (window, &color);
  	}
 -	
++	}
  
  	background->details->background_changes_with_size =
  		gnome_bg_changes_with_size (background->details->bg);
-@@ -679,6 +709,19 @@ eel_background_set_up_widget (EelBackgro
+ 	
+-	if (background->details->is_desktop) {
+-
+-		root_pixmap = NULL;
+-
+-		if (background->details->use_common_pixmap) {
+-			root_pixmap = g_object_ref (pixmap);
+-		} else {
+-			root_pixmap = gnome_bg_create_pixmap (background->details->bg, window,
+-							      window_width, window_height, TRUE);
+-		}
+-
+-		gnome_bg_set_pixmap_as_root (gdk_drawable_get_screen (window), root_pixmap);
+-		g_object_unref (root_pixmap);
++	if (background->details->is_desktop && !in_fade) {
++		set_root_pixmap (background, window);
+ 	}
+ 	
+ 	if (pixmap) {
+@@ -677,8 +725,32 @@ eel_background_set_up_widget (EelBackgro
+ }
+ 
  static void
++free_fade (EelBackground    *background)
++{
++	g_object_unref (background->details->fade);
++	background->details->fade = NULL;
++}
++
++static void
  eel_widget_background_changed (GtkWidget *widget, EelBackground *background)
  {
 +	if (GTK_WIDGET_REALIZED (widget)) {
@@ -90,6 +164,10 @@
 +			int width, height;
 +			gdk_drawable_get_size (widget->window, &width, &height);
 +			background->details->fade = gnome_bg_crossfade_new (width, height);
++			g_signal_connect_swapped (background->details->fade,
++						"finished",
++						G_CALLBACK (free_fade),
++						background);
 +		}
 +
 +		if (!gnome_bg_crossfade_is_started (background->details->fade)) {
@@ -101,18 +179,39 @@
  	eel_background_unrealize (background);
  	eel_background_set_up_widget (background, widget);
  
-@@ -745,7 +788,13 @@ widget_realize_cb (GtkWidget *widget, gp
- 	background = EEL_BACKGROUND (data);
+@@ -704,7 +776,6 @@ screen_size_changed (GdkScreen *screen, 
+ 	g_signal_emit (background, signals[APPEARANCE_CHANGED], 0);
+ }
  
- 	widget_realized_setup (widget, data);
--		
-+
-+	if (background->details->fade != NULL) {
-+		gnome_bg_crossfade_stop (background->details->fade);
-+		g_object_unref (background->details->fade);
-+		background->details->fade = NULL;
-+	}
+-
+ static void
+ widget_realized_setup (GtkWidget *widget, gpointer data)
+ {
+@@ -715,6 +786,8 @@ widget_realized_setup (GtkWidget *widget
+         if (background->details->is_desktop) {
+ 		GdkWindow *root_window;	
+ 		GdkScreen *screen;
++		GdkPixmap *start_pixmap;
++		int width, height;
+ 		
+ 		screen = gtk_widget_get_screen (widget);
+ 
+@@ -734,6 +807,18 @@ widget_realized_setup (GtkWidget *widget
+ 		} else {
+ 			background->details->use_common_pixmap = FALSE;
+ 		}
++
++		gdk_drawable_get_size (widget->window, &width, &height);
++		background->details->fade = gnome_bg_crossfade_new (width, height);
++		g_signal_connect_swapped (background->details->fade,
++					"finished",
++					G_CALLBACK (free_fade),
++					background);
++
++		start_pixmap = gnome_bg_get_pixmap_from_root (screen);
++		gnome_bg_crossfade_set_start_pixmap (background->details->fade, start_pixmap);
++		g_object_unref (start_pixmap);
 +
- 	eel_background_set_up_widget (background, widget);
+ 	}
  }
  


Index: eel2.spec
===================================================================
RCS file: /cvs/pkgs/rpms/eel2/devel/eel2.spec,v
retrieving revision 1.103
retrieving revision 1.104
diff -u -r1.103 -r1.104
--- eel2.spec	4 Oct 2008 21:13:49 -0000	1.103
+++ eel2.spec	15 Oct 2008 15:48:02 -0000	1.104
@@ -17,7 +17,7 @@
 Name:        eel2
 Summary:     Eazel Extensions Library
 Version:     2.24.0
-Release:     4%{?dist}
+Release:     5%{?dist}
 License:     LGPLv2+
 Group:       System Environment/Libraries
 Source:      http://download.gnome.org/sources/eel/2.24/eel-%{version}.tar.bz2
@@ -113,6 +113,10 @@
 %{_includedir}/eel-2
 
 %changelog
+* Wed Oct 15 2008 Ray Strode <rstrode at redhat.com> - 2.24.0-5
+- Fix crossfade from login session now that g-s-d race
+  is fixed.
+
 * Sat Oct  4 2008 Ray Strode <rstrode at redhat.com> - 2.24.0-4
 - Fix problem in last patch that was preventing crossfades
   in appearance capplet




More information about the scm-commits mailing list