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 fedora-extras-commits
mailing list