[cogl/wip/cogl-1.14: 71/177] Add cogl_sdl_onscreen_get_window()



commit 30fe9a545a1f291f58b14d0ce4908f45e3a640c4
Author: Neil Roberts <neil linux intel com>
Date:   Mon Nov 26 13:07:36 2012 +0000

    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>
    
    (cherry picked from commit 071f4b80daa8a2f967746a30b3acf014d74f781a)

 cogl/cogl-sdl.h                                    |   17 +++++++++++++++++
 cogl/winsys/cogl-winsys-sdl2.c                     |   16 ++++++++++++++++
 .../cogl-2.0-experimental-sections.txt             |    1 +
 3 files changed, 34 insertions(+), 0 deletions(-)
---
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/cogl-2.0-experimental/cogl-2.0-experimental-sections.txt b/doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-sections.txt
index 1944951..5ccab9e 100644
--- a/doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-sections.txt
+++ b/doc/reference/cogl-2.0-experimental/cogl-2.0-experimental-sections.txt
@@ -822,4 +822,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>



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]