[gnome-settings-daemon] background: stop pending fades if new ones initiated
- From: Ray Strode <halfline src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-settings-daemon] background: stop pending fades if new ones initiated
- Date: Mon, 7 Feb 2011 21:00:49 +0000 (UTC)
commit 5cb80995b6899c6ed185797333b709ea9342de42
Author: Ray Strode <rstrode redhat com>
Date: Mon Feb 7 15:11:39 2011 -0500
background: stop pending fades if new ones initiated
This prevents some strange flicker when quickly selecting
multiple backgrounds in the background capplet.
plugins/background/gsd-background-manager.c | 21 +++++++++++++++++----
1 files changed, 17 insertions(+), 4 deletions(-)
---
diff --git a/plugins/background/gsd-background-manager.c b/plugins/background/gsd-background-manager.c
index 9c2a575..ef57cfe 100644
--- a/plugins/background/gsd-background-manager.c
+++ b/plugins/background/gsd-background-manager.c
@@ -53,6 +53,8 @@ struct GsdBackgroundManagerPrivate
GnomeBG *bg;
guint timeout_id;
+ GnomeBGCrossfade *fade;
+
GDBusProxy *proxy;
guint proxy_signal_id;
};
@@ -167,6 +169,13 @@ nautilus_is_drawing_background (GsdBackgroundManager *manager)
}
static void
+on_crossfade_finished (GsdBackgroundManager *manager)
+{
+ g_object_unref (manager->priv->fade);
+ manager->priv->fade = NULL;
+}
+
+static void
draw_background (GsdBackgroundManager *manager,
gboolean use_crossfade)
{
@@ -200,11 +209,15 @@ draw_background (GsdBackgroundManager *manager,
TRUE);
if (use_crossfade) {
- GnomeBGCrossfade *fade;
- fade = gnome_bg_set_surface_as_root_with_crossfade (screen, surface);
- g_signal_connect (fade, "finished",
- G_CALLBACK (g_object_unref), NULL);
+ if (manager->priv->fade != NULL) {
+ g_object_unref (manager->priv->fade);
+ }
+
+ manager->priv->fade = gnome_bg_set_surface_as_root_with_crossfade (screen, surface);
+ g_signal_connect_swapped (manager->priv->fade, "finished",
+ G_CALLBACK (on_crossfade_finished),
+ manager);
} else {
gnome_bg_set_surface_as_root (screen, surface);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]