diff --git a/gnome-desktop-2.24.0-fade.patch b/gnome-desktop-2.24.0-fade.patch index d55931a..e46ca6f 100644 --- a/gnome-desktop-2.24.0-fade.patch +++ b/gnome-desktop-2.24.0-fade.patch @@ -1,4 +1,4 @@ -diff -upb gnome-desktop-2.24.0/libgnome-desktop/gnome-bg.c.fade gnome-desktop-2.24.0/libgnome-desktop/gnome-bg.c +diff -up 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-15 11:12:56.000000000 -0400 @@ -37,11 +37,15 @@ Author: Soren Sandmann priv->window) == GDK_WINDOW_FOREIGN || ++ GDK_WINDOW_TYPE (fade->priv->window) == GDK_WINDOW_ROOT) { ++ GdkDisplay *display; ++ display = gdk_drawable_get_display (fade->priv->window); ++ gdk_window_clear (fade->priv->window); ++ gdk_flush (); ++ } else { ++ gdk_window_invalidate_rect (fade->priv->window, NULL, FALSE); ++ gdk_window_process_updates (fade->priv->window, FALSE); ++ } ++} ++ +static gboolean +on_tick (GnomeBGCrossfade *fade) +{ @@ -616,12 +659,22 @@ diff -upb /dev/null gnome-desktop-2.24.0/libgnome-desktop/gnome-bg-crossfade.c + 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; ++ now = get_current_time (); + ++ percent_done = (now - fade->priv->start_time) / fade->priv->total_duration; + percent_done = CLAMP (percent_done, 0.0, 1.0); + ++ /* If it's taking a long time to get to the first frame, ++ * then lengthen the duration, so the user will get to see ++ * the effect. ++ */ ++ if (fade->priv->is_first_frame && percent_done > .33) { ++ fade->priv->is_first_frame = FALSE; ++ fade->priv->total_duration *= 1.5; ++ return on_tick (fade); ++ } ++ + if (fade->priv->fading_pixmap == NULL) { + return FALSE; + } @@ -648,16 +701,8 @@ diff -upb /dev/null gnome-desktop-2.24.0/libgnome-desktop/gnome-bg-crossfade.c + cairo_destroy (cr); + + if (status == CAIRO_STATUS_SUCCESS) { -+ if (GDK_WINDOW_TYPE (fade->priv->window) == GDK_WINDOW_FOREIGN || -+ GDK_WINDOW_TYPE (fade->priv->window) == GDK_WINDOW_ROOT) { -+ GdkDisplay *display; -+ display = gdk_drawable_get_display (fade->priv->window); -+ gdk_window_clear (fade->priv->window); -+ gdk_display_flush (display); -+ } else { -+ gdk_window_invalidate_rect (fade->priv->window, NULL, FALSE); -+ } -+ } ++ draw_background (fade); ++ } + return percent_done <= .99; +} + @@ -665,12 +710,10 @@ diff -upb /dev/null gnome-desktop-2.24.0/libgnome-desktop/gnome-bg-crossfade.c +on_finished (GnomeBGCrossfade *fade) +{ + if (fade->priv->end_pixmap != NULL) { -+ GdkDisplay *display; + gdk_window_set_back_pixmap (fade->priv->window, + fade->priv->end_pixmap, + FALSE); -+ display = gdk_drawable_get_display (fade->priv->window); -+ gdk_display_sync (display); ++ draw_background (fade); + } + + if (fade->priv->fading_pixmap != NULL) { @@ -711,8 +754,11 @@ diff -upb /dev/null gnome-desktop-2.24.0/libgnome-desktop/gnome-bg-crossfade.c + gdk_window_set_back_pixmap (fade->priv->window, + fade->priv->fading_pixmap, + FALSE); -+ gdk_window_clear (fade->priv->window); -+ gdk_flush (); ++ gdk_window_clear (fade->priv->window); ++ gdk_flush (); ++ ++ fade->priv->is_first_frame = TRUE; ++ fade->priv->total_duration = .75; + fade->priv->start_time = get_current_time (); +} + @@ -733,8 +779,8 @@ diff -upb /dev/null gnome-desktop-2.24.0/libgnome-desktop/gnome-bg-crossfade.c + g_source_remove (fade->priv->timeout_id); + } +} -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 +diff -up /dev/null gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/gnome-bg-crossfade.h +--- /dev/null 2008-10-20 05:51:19.470282574 -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 @@ -813,7 +859,7 @@ diff -upb /dev/null gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/gnome-bg-cr +G_END_DECLS + +#endif -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 +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 --- 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 17:49:44.000000000 -0400 @@ -33,6 +33,8 @@ @@ -845,7 +891,7 @@ diff -upb gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/gnome-bg.h.fade gnome G_END_DECLS -diff -upb gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/Makefile.am.fade gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/Makefile.am +diff -up 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 17:49:44.000000000 -0400 @@ -3,6 +3,7 @@ libgnomeui_desktop_HEADERS = \ @@ -856,7 +902,7 @@ diff -upb gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/Makefile.am.fade gnom gnome-rr.h \ gnome-rr-config.h \ gnome-rr-labeler.h -diff -upb gnome-desktop-2.24.0/libgnome-desktop/Makefile.am.fade gnome-desktop-2.24.0/libgnome-desktop/Makefile.am +diff -up 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 17:49:44.000000000 -0400 @@ -21,6 +21,7 @@ libgnome_desktop_2_la_SOURCES = \ diff --git a/gnome-desktop.spec b/gnome-desktop.spec index b94b353..e82ff5b 100644 --- a/gnome-desktop.spec +++ b/gnome-desktop.spec @@ -12,7 +12,7 @@ Summary: Package containing code shared among gnome-panel, gnome-session, nautilus, etc Name: gnome-desktop Version: 2.24.0 -Release: 7%{?dist} +Release: 8%{?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,11 @@ rm -rf $RPM_BUILD_ROOT %doc %{_datadir}/gtk-doc/html/gnome-desktop/ %changelog +* Mon Oct 20 2008 Ray Strode - 2.24.0-8 +- consoliate window repaint code to one place +- Lengthen duration of animation if getting to the first frame + takes a long time. + * Wed Oct 15 2008 Ray Strode - 2.24.0-7 - Add new api for getting the root window pixmap - Pass start window to crossfade "finished" signal