From d8696c17bef80617fbe53ac412959a77d8e24e7d Mon Sep 17 00:00:00 2001 From: "Owen W. Taylor" Date: Mon, 12 Nov 2012 13:39:59 -0500 Subject: [PATCH] Use clutter_stage_set_sync_delay() Using a "sync delay" where we wait for 2 ms after the vblank before starting to draw the next frame provides for much more predictable latency for applications. An application can know that if it completes a frame any time between 8ms before the vblank to the vblank, it will reliably be drawn on the following vblank period, rather than having an unpredictable latency depending on whether the compositor is currently busy drawing a frame or not. https://bugzilla.gnome.org/show_bug.cgi?id=685463 --- src/compositor/compositor.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/compositor/compositor.c b/src/compositor/compositor.c index a1b361bcc..bda462123 100644 --- a/src/compositor/compositor.c +++ b/src/compositor/compositor.c @@ -552,6 +552,9 @@ meta_compositor_manage_screen (MetaCompositor *compositor, g_signal_connect_after (info->stage, "paint", G_CALLBACK (after_stage_paint), info); + /* Wait 2ms after vblank before starting to draw next frame */ + clutter_stage_set_sync_delay (CLUTTER_STAGE (info->stage), 2); + meta_screen_get_size (screen, &width, &height); clutter_actor_realize (info->stage);