x11: ensure some context is bound before calling glClientWaitSync

Since commit 972134abe4 we now call
glClientWaitSync for the vendor nvidia driver, to know when a frame
is ready for the compositor to process.

glClientWaitSync can be called regardless of which context is currently
bound, but if no context is bound at all, it returns 0 without
doing anything.

This commit checks for that edge case, and ensures a context gets
made current in the event no context is already current, before calling
glClientWaitSync.
This commit is contained in:
Ray Strode 2020-06-22 17:13:54 -04:00
parent 367d24be7f
commit a0f6ff101e

View File

@ -606,6 +606,14 @@ on_gl_surface_xevent (GdkGLContext *context,
{
GLenum wait_result;
/* We don't care if the passed context is the current context,
* necessarily, but we do care that *some* context is bound,
* otherwise, the GL dispatch layer will make glClientWaitSync()
* silently return 0.
*/
if (glXGetCurrentContext () == NULL)
gdk_gl_context_make_current (context);
wait_result = glClientWaitSync (context_x11->frame_fence, 0, 0);
switch (wait_result)