From a5fb6e164c1c05f342dabb5b2db3a4de8f28d382 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Oct 12 2008 17:16:49 +0000 Subject: - Don't crossfade between frames on a slideshow --- diff --git a/gnome-desktop-2.24.0-fade.patch b/gnome-desktop-2.24.0-fade.patch index de8a2ff..a8ff6ad 100644 --- a/gnome-desktop-2.24.0-fade.patch +++ b/gnome-desktop-2.24.0-fade.patch @@ -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 --- 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-10 18:21:11.000000000 -0400 ++++ gnome-desktop-2.24.0/libgnome-desktop/gnome-bg.c 2008-10-12 12:17:40.000000000 -0400 @@ -37,11 +37,15 @@ Author: Soren Sandmann #include @@ -17,7 +17,69 @@ diff -up gnome-desktop-2.24.0/libgnome-desktop/gnome-bg.c.fade gnome-desktop-2.2 #define BG_KEY_DRAW_BACKGROUND GNOME_BG_KEY_DIR "/draw_background" #define BG_KEY_PRIMARY_COLOR GNOME_BG_KEY_DIR "/primary_color" -@@ -1012,52 +1016,88 @@ gnome_bg_create_thumbnail (GnomeBG +@@ -98,6 +102,7 @@ struct _GnomeBG + GFileMonitor * file_monitor; + + guint changed_id; ++ guint transitioned_id; + + /* Cached information, only access through cache accessor functions */ + SlideShow * slideshow; +@@ -115,6 +120,7 @@ struct _GnomeBGClass + + enum { + CHANGED, ++ TRANSITIONED, + N_SIGNALS + }; + +@@ -275,6 +281,30 @@ queue_changed (GnomeBG *bg) + NULL); + } + ++static gboolean ++do_transitioned (GnomeBG *bg) ++{ ++ bg->transitioned_id = 0; ++ ++ g_signal_emit (G_OBJECT (bg), signals[TRANSITIONED], 0); ++ ++ return FALSE; ++} ++ ++static void ++queue_transitioned (GnomeBG *bg) ++{ ++ if (bg->transitioned_id > 0) { ++ g_source_remove (bg->transitioned_id); ++ } ++ ++ bg->transitioned_id = g_timeout_add_full (G_PRIORITY_LOW, ++ 100, ++ (GSourceFunc)do_transitioned, ++ bg, ++ NULL); ++} ++ + void + gnome_bg_load_from_preferences (GnomeBG *bg, + GConfClient *client) +@@ -414,6 +444,14 @@ gnome_bg_class_init (GnomeBGClass *klass + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); ++ ++ signals[TRANSITIONED] = g_signal_new ("transitioned", ++ G_OBJECT_CLASS_TYPE (object_class), ++ G_SIGNAL_RUN_LAST, ++ 0, ++ NULL, NULL, ++ g_cclosure_marshal_VOID__VOID, ++ G_TYPE_NONE, 0); + } + + GnomeBG * +@@ -1012,52 +1050,88 @@ gnome_bg_create_thumbnail (GnomeBG } @@ -124,7 +186,7 @@ diff -up gnome-desktop-2.24.0/libgnome-desktop/gnome-bg.c.fade gnome-desktop-2.2 } pixmap_id = GDK_WINDOW_XWINDOW (pixmap); -@@ -1071,13 +1111,68 @@ gnome_bg_set_pixmap_as_root (GdkScreen * +@@ -1071,13 +1145,68 @@ gnome_bg_set_pixmap_as_root (GdkScreen * 32, PropModeReplace, (guchar *) &pixmap_id, 1); @@ -197,9 +259,18 @@ diff -up gnome-desktop-2.24.0/libgnome-desktop/gnome-bg.c.fade gnome-desktop-2.2 } +@@ -1343,7 +1472,7 @@ on_timeout (gpointer data) + + bg->timeout_id = 0; + +- queue_changed (bg); ++ queue_transitioned (bg); + + return FALSE; + } diff -up /dev/null gnome-desktop-2.24.0/libgnome-desktop/gnome-bg-crossfade.c ---- /dev/null 2008-10-10 15:02:13.276315181 -0400 -+++ gnome-desktop-2.24.0/libgnome-desktop/gnome-bg-crossfade.c 2008-10-10 18:21:11.000000000 -0400 +--- /dev/null 2008-10-12 06:46:34.272291660 -0400 ++++ gnome-desktop-2.24.0/libgnome-desktop/gnome-bg-crossfade.c 2008-10-10 19:17:21.000000000 -0400 @@ -0,0 +1,432 @@ +/* gnome-bg-crossfade.h - fade window background between two pixmaps + * @@ -553,7 +624,7 @@ diff -up /dev/null gnome-desktop-2.24.0/libgnome-desktop/gnome-bg-crossfade.c + GdkDisplay *display; + display = gdk_drawable_get_display (fade->priv->window); + gdk_window_clear (fade->priv->window); -+ gdk_display_sync (display); ++ gdk_display_flush (display); + } else { + gdk_window_invalidate_rect (fade->priv->window, NULL, FALSE); + } @@ -602,7 +673,7 @@ diff -up /dev/null gnome-desktop-2.24.0/libgnome-desktop/gnome-bg-crossfade.c + + fade->priv->start_time = get_current_time (); + -+ source = g_timeout_source_new (1000 / 30.0); ++ source = g_timeout_source_new (1000 / 60.0); + g_source_set_callback (source, + (GSourceFunc) on_tick, + fade, @@ -634,7 +705,7 @@ diff -up /dev/null gnome-desktop-2.24.0/libgnome-desktop/gnome-bg-crossfade.c + } +} diff -up /dev/null gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/gnome-bg-crossfade.h ---- /dev/null 2008-10-10 15:02:13.276315181 -0400 +--- /dev/null 2008-10-12 06:46:34.272291660 -0400 +++ gnome-desktop-2.24.0/libgnome-desktop/libgnomeui/gnome-bg-crossfade.h 2008-10-10 18:21:11.000000000 -0400 @@ -0,0 +1,79 @@ +/* gnome-bg-crossfade.h - fade window background between two pixmaps diff --git a/gnome-desktop.spec b/gnome-desktop.spec index fe0d97e..c9c5b9e 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: 4%{?dist} +Release: 5%{?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,9 @@ rm -rf $RPM_BUILD_ROOT %doc %{_datadir}/gtk-doc/html/gnome-desktop/ %changelog +* Sun Oct 12 2008 Ray Strode - 2.24.0-5 +- Don't crossfade between frames on a slideshow + * Fri Oct 10 2008 Ray Strode - 2.24.0-4 - Try to address bug 465699 by throttling animation frames to X server. May revert if it ends up making animation