static gboolean
find_eglconfig_for_window (GdkWindow *window,
EGLConfig *egl_config_out,
+ EGLint *min_swap_interval_out,
GError **error)
{
GdkDisplay *display = gdk_window_get_display (window);
GdkVisual *visual = gdk_window_get_visual (window);
EGLint attrs[MAX_EGL_ATTRS];
EGLint count;
- EGLConfig *configs;
+ EGLConfig *configs, chosen_config;
gboolean use_rgba;
int i = 0;
}
/* Pick first valid configuration i guess? */
+ chosen_config = configs[0];
+
+ if (!eglGetConfigAttrib (display_wayland->egl_display, chosen_config,
+ EGL_MIN_SWAP_INTERVAL, min_swap_interval_out))
+ {
+ g_set_error_literal (error, GDK_GL_ERROR,
+ GDK_GL_ERROR_NOT_AVAILABLE,
+ "Could not retrieve the minimum swap interval");
+ g_free (configs);
+ return FALSE;
+ }
if (egl_config_out != NULL)
- *egl_config_out = configs[0];
+ *egl_config_out = chosen_config;
g_free (configs);
return NULL;
}
- if (!find_eglconfig_for_window (window, &config, error))
+ if (!find_eglconfig_for_window (window, &config,
+ &display_wayland->egl_min_swap_interval,
+ error))
return NULL;
context = g_object_new (GDK_TYPE_WAYLAND_GL_CONTEXT,
return FALSE;
}
+ if (display_wayland->egl_min_swap_interval == 0)
+ eglSwapInterval (display_wayland->egl_display, 0);
+ else
+ g_debug ("Can't disable GL swap interval");
+
return TRUE;
}