aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2006-12-04 08:58:07 +1100
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2006-12-04 08:58:07 +1100
commitaa7984d147b5ef09ad287a2a2fb034050a5d8e7c (patch)
tree095d0963cf4c0d07998200e9708b828f1244248d
parent74bc25e9961347b1fce527ae38ac9e73670b6ee7 (diff)
downloadlibtwin-aa7984d147b5ef09ad287a2a2fb034050a5d8e7c.tar.gz
Stop widgets update flicker with immediate refresh
This patch disables refresh around widget refresh operations (from the toplevel object) so that individual widgets get refreshed at once and thus don't flicker. This fixes the flicker with the demos Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
-rw-r--r--twin_toplevel.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/twin_toplevel.c b/twin_toplevel.c
index 40e4931..a8fd246 100644
--- a/twin_toplevel.c
+++ b/twin_toplevel.c
@@ -57,8 +57,10 @@ _twin_toplevel_draw (twin_window_t *window)
twin_toplevel_t *toplevel = window->client_data;
twin_event_t event;
+ twin_screen_disable_update(window->screen);
event.kind = TwinEventPaint;
(*toplevel->box.widget.dispatch) (&toplevel->box.widget, &event);
+ twin_screen_enable_update(window->screen);
}
static void
@@ -122,9 +124,11 @@ _twin_toplevel_paint (void *closure)
{
twin_toplevel_t *toplevel = closure;
twin_event_t ev;
-
+
+ twin_screen_disable_update(toplevel->box.widget.window->screen);
ev.kind = TwinEventPaint;
(*toplevel->box.widget.dispatch) (&toplevel->box.widget, &ev);
+ twin_screen_enable_update(toplevel->box.widget.window->screen);
return TWIN_FALSE;
}