summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNeil Roberts <neil@linux.intel.com>2012-11-26 13:07:36 +0000
committerNeil Roberts <neil@linux.intel.com>2012-11-26 17:52:16 +0000
commit071f4b80daa8a2f967746a30b3acf014d74f781a (patch)
treee0d0a19d9d219f1fc57ae98c376e153648d25645
parent5ac07c4de207f83247f143fd01acba1e6b975385 (diff)
downloadcogl-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>
-rw-r--r--cogl/cogl-sdl.h17
-rw-r--r--cogl/winsys/cogl-winsys-sdl2.c16
-rw-r--r--doc/reference/cogl2/cogl2-sections.txt1
3 files changed, 34 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)
{
diff --git a/doc/reference/cogl2/cogl2-sections.txt b/doc/reference/cogl2/cogl2-sections.txt
index 004c0c03..5d58d104 100644
--- a/doc/reference/cogl2/cogl2-sections.txt
+++ b/doc/reference/cogl2/cogl2-sections.txt
@@ -758,4 +758,5 @@ cogl_sdl_renderer_set_event_type
cogl_sdl_renderer_get_event_type
cogl_sdl_handle_event
cogl_sdl_idle
+cogl_sdl_onscreen_get_window
</SECTION>