diff options
author | Neil Roberts <neil@linux.intel.com> | 2012-11-26 13:07:36 +0000 |
---|---|---|
committer | Neil Roberts <neil@linux.intel.com> | 2012-11-26 17:52:16 +0000 |
commit | 071f4b80daa8a2f967746a30b3acf014d74f781a (patch) | |
tree | e0d0a19d9d219f1fc57ae98c376e153648d25645 /cogl | |
parent | 5ac07c4de207f83247f143fd01acba1e6b975385 (diff) | |
download | cogl-071f4b80daa8a2f967746a30b3acf014d74f781a.tar.gz |
Add cogl_sdl_onscreen_get_window()
This adds a function to get a pointer to the SDL_Window associated
with a CoglOnscreen when using the SDL2 winsys.
Reviewed-by: Robert Bragg <robert@linux.intel.com>
Diffstat (limited to 'cogl')
-rw-r--r-- | cogl/cogl-sdl.h | 17 | ||||
-rw-r--r-- | cogl/winsys/cogl-winsys-sdl2.c | 16 |
2 files changed, 33 insertions, 0 deletions
diff --git a/cogl/cogl-sdl.h b/cogl/cogl-sdl.h index 05da0366..0508649d 100644 --- a/cogl/cogl-sdl.h +++ b/cogl/cogl-sdl.h @@ -29,6 +29,7 @@ #define __COGL_SDL_H__ #include <cogl/cogl-context.h> +#include <cogl/cogl-onscreen.h> #include <SDL.h> #ifdef _MSC_VER @@ -202,6 +203,22 @@ cogl_sdl_handle_event (CoglContext *context, SDL_Event *event); void cogl_sdl_idle (CoglContext *context); +#if SDL_MAJOR_VERSION >= 2 + +/** + * cogl_sdl_onscreen_get_window: + * @onscreen: A #CoglOnscreen + * + * Returns the underlying SDL_Window associated with an onscreen framebuffer. + * + * Since: 2.0 + * Stability: unstable + */ +SDL_Window * +cogl_sdl_onscreen_get_window (CoglOnscreen *onscreen); + +#endif /* SDL_MAJOR_VERSION */ + G_END_DECLS #endif /* __COGL_SDL_H__ */ diff --git a/cogl/winsys/cogl-winsys-sdl2.c b/cogl/winsys/cogl-winsys-sdl2.c index 1c0fc316..8c0c256e 100644 --- a/cogl/winsys/cogl-winsys-sdl2.c +++ b/cogl/winsys/cogl-winsys-sdl2.c @@ -38,6 +38,7 @@ #include "cogl-onscreen-private.h" #include "cogl-winsys-sdl-private.h" #include "cogl-error-private.h" +#include "cogl-sdl.h" typedef struct _CoglContextSdl2 { @@ -510,6 +511,21 @@ _cogl_winsys_poll_dispatch (CoglContext *context, } } +SDL_Window * +cogl_sdl_onscreen_get_window (CoglOnscreen *onscreen) +{ + CoglOnscreenSdl2 *sdl_onscreen; + + _COGL_RETURN_VAL_IF_FAIL (cogl_is_onscreen (onscreen), NULL); + + if (!cogl_framebuffer_allocate (COGL_FRAMEBUFFER (onscreen), NULL)) + return NULL; + + sdl_onscreen = onscreen->winsys; + + return sdl_onscreen->window; +} + const CoglWinsysVtable * _cogl_winsys_sdl_get_vtable (void) { |