diff options
author | Emmanuele Bassi <ebassi@gnome.org> | 2015-01-27 21:23:23 +0000 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gnome.org> | 2015-02-09 19:10:04 +0000 |
commit | 22e6f37c9c00ca3e97fbd454774a178473a0c93e (patch) | |
tree | 02f82bcbe93f6c324245abd7e532aae9ff85e796 /gdk/gdkglcontextprivate.h | |
parent | 8f50148a34a4d44da8e0c3022e47aeaba4ee489d (diff) | |
download | gtk+-22e6f37c9c00ca3e97fbd454774a178473a0c93e.tar.gz |
GL: Split GL context creation in two phases
One of the major requests by OpenGL users has been the ability to
specify settings when creating a GL context, like the version to use
or whether the debug support should be enabled.
We have a couple of requirements in terms of API:
• avoid, if at all possible, the "C arrays of integers with
attribute, value pairs", which are hard to write and hard
to bind in non-C languages.
• allow failing in a recoverable way.
• do not make the GL context creation API a mess of arguments.
Looking at prior art, it seems that a common pattern is to split the
construction phase in two:
• a first phase that creates a GL context wrapper object and
does preliminary checks on the environment.
• a second phase that creates the backend-specific GL object.
We adopted a similar pattern:
• gdk_window_create_gl_context() creates a GdkGLContext
• gdk_gl_context_realize() creates the underlying resources
Calling gdk_gl_context_make_current() also realizes the context, so
simple GL users do not need to care. Advanced users will want to
call gdk_window_create_gl_context(), set up the optional requirements,
and then call gdk_gl_context_realize(). If either of these two steps
fails, it's possible to recover by changing the requirements, or simply
creating a new GdkGLContext instance.
https://bugzilla.gnome.org/show_bug.cgi?id=741946
Diffstat (limited to 'gdk/gdkglcontextprivate.h')
-rw-r--r-- | gdk/gdkglcontextprivate.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/gdk/gdkglcontextprivate.h b/gdk/gdkglcontextprivate.h index 4efface088..f282539cfd 100644 --- a/gdk/gdkglcontextprivate.h +++ b/gdk/gdkglcontextprivate.h @@ -40,6 +40,9 @@ struct _GdkGLContextClass { GObjectClass parent_class; + gboolean (* realize) (GdkGLContext *context, + GError **error); + void (* end_frame) (GdkGLContext *context, cairo_region_t *painted, cairo_region_t *damage); |