glx: Make sure to glFlush if blitting to frontbuffer.

Unlike glXSwapBuffers, glXCopySubBuffer and glBlitFramebuffer don't
issue an implicit glFlush() so we have to flush ourselves if we want the
request to complete in finite amount of time since otherwise the driver
can batch the command indefinitely.

http://bugzilla.clutter-project.org/show_bug.cgi?id=2551
This commit is contained in:
Robert Bragg 2011-02-08 17:54:49 +00:00
parent 7b0491427c
commit ce3f55292a

View File

@ -577,6 +577,13 @@ clutter_stage_glx_redraw (ClutterStageWindow *stage_window)
copy_area.width, copy_area.width,
copy_area.height); copy_area.height);
CLUTTER_TIMER_STOP (_clutter_uprof_context, blit_sub_buffer_timer); CLUTTER_TIMER_STOP (_clutter_uprof_context, blit_sub_buffer_timer);
/* NB: unlike glXSwapBuffers, glXCopySubBuffer and
* glBlitFramebuffer don't issue an implicit glFlush() so we
* have to flush ourselves if we want the request to complete in
* finite amount of time since otherwise the driver can batch
* the command indefinitely. */
glFlush ();
} }
else else
{ {