[Cogl] [PATCH] Add cogl_sdl_onscreen_get_window()

Neil Roberts neil at linux.intel.com
Mon Nov 26 07:15:14 PST 2012


This adds a function to get a pointer to the SDL_Window associated
with a CoglOnscreen when using the SDL2 winsys.
---
 cogl/cogl-sdl.h                        | 17 +++++++++++++++++
 cogl/winsys/cogl-winsys-sdl2.c         | 16 ++++++++++++++++
 doc/reference/cogl2/cogl2-sections.txt |  1 +
 3 files changed, 34 insertions(+)

diff --git a/cogl/cogl-sdl.h b/cogl/cogl-sdl.h
index 05da036..0508649 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 1c0fc31..8c0c256 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 004c0c0..5d58d10 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>
-- 
1.7.11.3.g3c3efa5



More information about the Cogl mailing list