diff options
author | Emmanuele Bassi <ebassi@gnome.org> | 2015-07-22 20:17:52 +0100 |
---|---|---|
committer | Emmanuele Bassi <ebassi@gnome.org> | 2015-07-22 20:17:52 +0100 |
commit | 19ca856810f25006c982a8f2e5ee4cbc485bb9cd (patch) | |
tree | 88706554b2b1d1235f398856da75b98d3829c77e | |
parent | 0ad995746a32cce5709d718442c10b3b9ba1edee (diff) | |
download | cogl-19ca856810f25006c982a8f2e5ee4cbc485bb9cd.tar.gz |
Store XVisualInfo into the Xlib renderer
We want to be able to retrieve the XVisualInfo used when creating the
GL context under GLX and EGL-X11, so that we can use the visual before
we have an onscreen frame buffer.
-rw-r--r-- | cogl/cogl-xlib-renderer-private.h | 2 | ||||
-rw-r--r-- | cogl/cogl-xlib-renderer.c | 17 | ||||
-rw-r--r-- | cogl/cogl-xlib-renderer.h | 4 | ||||
-rw-r--r-- | cogl/cogl.symbols | 1 |
4 files changed, 24 insertions, 0 deletions
diff --git a/cogl/cogl-xlib-renderer-private.h b/cogl/cogl-xlib-renderer-private.h index 3c2b6829..ea0ee906 100644 --- a/cogl/cogl-xlib-renderer-private.h +++ b/cogl/cogl-xlib-renderer-private.h @@ -48,6 +48,8 @@ typedef struct _CoglXlibRenderer CoglXlibTrapState *trap_state; unsigned long outputs_update_serial; + + XVisualInfo *xvisinfo; } CoglXlibRenderer; CoglBool diff --git a/cogl/cogl-xlib-renderer.c b/cogl/cogl-xlib-renderer.c index 740f1e43..8801c1cb 100644 --- a/cogl/cogl-xlib-renderer.c +++ b/cogl/cogl-xlib-renderer.c @@ -58,6 +58,11 @@ static GList *_cogl_xlib_renderers = NULL; static void destroy_xlib_renderer_data (void *user_data) { + CoglXlibRenderer *data = user_data; + + if (data->xvisinfo) + XFree (data->xvisinfo); + g_slice_free (CoglXlibRenderer, user_data); } @@ -658,3 +663,15 @@ _cogl_xlib_renderer_output_for_rectangle (CoglRenderer *renderer, return max_overlapped; } + +XVisualInfo * +cogl_xlib_renderer_get_visual_info (CoglRenderer *renderer) +{ + CoglXlibRenderer *xlib_renderer; + + _COGL_RETURN_VAL_IF_FAIL (cogl_is_renderer (renderer), NULL); + + xlib_renderer = _cogl_xlib_renderer_get_data (renderer); + + return xlib_renderer->xvisinfo; +} diff --git a/cogl/cogl-xlib-renderer.h b/cogl/cogl-xlib-renderer.h index 6318957a..fdce06b0 100644 --- a/cogl/cogl-xlib-renderer.h +++ b/cogl/cogl-xlib-renderer.h @@ -34,6 +34,7 @@ #define __COGL_XLIB_RENDERER_H__ #include <X11/Xlib.h> +#include <X11/Xutil.h> /* NB: this is a top-level header that can be included directly but we * want to be careful not to define __COGL_H_INSIDE__ when this is @@ -169,6 +170,9 @@ cogl_xlib_renderer_set_event_retrieval_enabled (CoglRenderer *renderer, Display * cogl_xlib_renderer_get_display (CoglRenderer *renderer); +XVisualInfo * +cogl_xlib_renderer_get_visual_info (CoglRenderer *renderer); + COGL_END_DECLS /* The gobject introspection scanner seems to parse public headers in diff --git a/cogl/cogl.symbols b/cogl/cogl.symbols index c48314ac..c3b9f5a7 100644 --- a/cogl/cogl.symbols +++ b/cogl/cogl.symbols @@ -1063,6 +1063,7 @@ cogl_xlib_handle_event cogl_xlib_renderer_add_filter cogl_xlib_renderer_get_display cogl_xlib_renderer_get_foreign_display +cogl_xlib_renderer_get_visual_info cogl_xlib_renderer_handle_event cogl_xlib_renderer_remove_filter cogl_xlib_renderer_set_event_retrieval_enabled |