diff include/SDL_syswm.h @ 4900:69d9db65f248

Merged the Windows custom window system hooks into the union used by X11. Added Cocoa custom window system hooks
author Sam Lantinga <slouken@libsdl.org>
date Mon, 27 Sep 2010 01:24:05 -0700
parents 5d529386db73
children 50d0bff24d81
line wrap: on
line diff
--- a/include/SDL_syswm.h	Mon Sep 27 00:50:46 2010 -0700
+++ b/include/SDL_syswm.h	Mon Sep 27 01:24:05 2010 -0700
@@ -54,8 +54,12 @@
 struct SDL_SysWMinfo;
 #else
 
+#if defined(SDL_VIDEO_DRIVER_WIN32)
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#endif
+
 /* This is the structure for custom window manager events */
-#if defined(SDL_VIDEO_DRIVER_X11) || defined(SDL_VIDEO_DRIVER_DIRECTFB)
 #if defined(SDL_VIDEO_DRIVER_X11)
 #if defined(__APPLE__) && defined(__MACH__)
 /* conflicts with Quickdraw.h */
@@ -75,21 +79,29 @@
 #if defined(SDL_VIDEO_DRIVER_DIRECTFB)
 #include <directfb/directfb.h>
 #endif
+
+#if defined(SDL_VIDEO_DRIVER_COCOA)
+#ifdef __OBJC__
+#include <Cocoa/Cocoa.h>
+#else
+typedef struct _NSWindow NSWindow;
+#endif
+#endif
+
 /** 
- *  These are the various supported subsystems under UNIX.
+ *  These are the various supported windowing subsystems
  */
 typedef enum
 {
-#if defined(SDL_VIDEO_DRIVER_X11)
+    SDL_SYSWM_UNKNOWN,
+    SDL_SYSWM_WINDOWS,
     SDL_SYSWM_X11,
-#endif
-#if defined(SDL_VIDEO_DRIVER_DIRECTFB)
     SDL_SYSWM_DIRECTFB,
-#endif
+    SDL_SYSWM_COCOA,
 } SDL_SYSWM_TYPE;
 
 /**
- *  The UNIX custom event structure.
+ *  The custom event structure.
  */
 struct SDL_SysWMmsg
 {
@@ -97,17 +109,35 @@
     SDL_SYSWM_TYPE subsystem;
     union
     {
+#if defined(SDL_VIDEO_DRIVER_WIN32)
+        struct {
+            HWND hwnd;                  /**< The window for the message */
+            UINT msg;                   /**< The type of message */
+            WPARAM wParam;              /**< WORD message parameter */
+            LPARAM lParam;              /**< LONG message parameter */
+        } win;
+#endif
 #if defined(SDL_VIDEO_DRIVER_X11)
-        XEvent xevent;
+        struct {
+            XEvent event;
+        } x11;
 #endif
 #if defined(SDL_VIDEO_DRIVER_DIRECTFB)
-        DFBEvent dfb_event;
+        struct {
+            DFBEvent event;
+        } dfb;
 #endif
-    } event;
+#if defined(SDL_VIDEO_DRIVER_COCOA)
+        struct
+        {
+            /* No Cocoa window events yet */
+        } cocoa;
+#endif
+    } msg;
 };
 
 /**
- *  The UNIX custom window manager information structure.
+ *  The custom window manager information structure.
  *
  *  When this structure is returned, it holds information about which
  *  low level system it is using, and will be one of SDL_SYSWM_TYPE.
@@ -118,11 +148,17 @@
     SDL_SYSWM_TYPE subsystem;
     union
     {
+#if defined(SDL_VIDEO_DRIVER_WIN32)
+        struct
+        {
+            HWND window;                /**< The Win32 display window */
+        } win;
+#endif
 #if defined(SDL_VIDEO_DRIVER_X11)
         struct
         {
-            Display *display;   /**< The X11 display */
-            Window window;      /**< The X11 display window */
+            Display *display;           /**< The X11 display */
+            Window window;              /**< The X11 display window */
         } x11;
 #endif
 #if defined(SDL_VIDEO_DRIVER_DIRECTFB)
@@ -131,106 +167,17 @@
         	IDirectFB *dfb;   			/**< The directfb main interface */
         	IDirectFBWindow *window;    /**< The directfb window handle */
         	IDirectFBSurface *surface;  /**< The directfb client surface */
-        } directfb;
+        } dfb;
+#endif
+#if defined(SDL_VIDEO_DRIVER_COCOA)
+        struct
+        {
+            NSWindow *window;
+        } cocoa;
 #endif
     } info;
 };
 
-#elif defined(SDL_VIDEO_DRIVER_WIN32)
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-
-/**
- *  The windows custom event structure.
- */
-struct SDL_SysWMmsg
-{
-    SDL_version version;
-    HWND hwnd;                  /**< The window for the message */
-    UINT msg;                   /**< The type of message */
-    WPARAM wParam;              /**< WORD message parameter */
-    LPARAM lParam;              /**< LONG message parameter */
-};
-
-/**
- *  The windows custom window manager information structure.
- */
-struct SDL_SysWMinfo
-{
-    SDL_version version;
-    HWND window;                /**< The Win32 display window */
-};
-
-#elif defined(SDL_VIDEO_DRIVER_RISCOS)
-
-/**
- *  RISC OS custom event structure.
- */
-struct SDL_SysWMmsg
-{
-    SDL_version version;
-    int eventCode;              /**< The window for the message */
-    int pollBlock[64];
-};
-
-/**
- *  The RISC OS custom window manager information structure.
- */
-struct SDL_SysWMinfo
-{
-    SDL_version version;
-    int wimpVersion;            /**< Wimp version running under */
-    int taskHandle;             /**< The RISC OS task handle */
-    int window;                 /**< The RISC OS display window */
-};
-
-#elif defined(SDL_VIDEO_DRIVER_PHOTON) || defined(SDL_VIDEO_DRIVER_QNXGF)
-#include <sys/neutrino.h>
-#if defined(SDL_VIDEO_OPENGL_ES)
-#include <gf/gf.h>
-#endif /* SDL_VIDEO_OPENGL_ES */
-#include <Ph.h>
-
-/**
- * The QNX custom event structure.
- */
-struct SDL_SysWMmsg
-{
-    SDL_version version;
-    int data;
-};
-
-/**
- *  The QNX Photon custom window manager information structure.
- */
-struct SDL_SysWMinfo
-{
-    SDL_version version;
-    int data;
-};
-
-#else
-
-/**
- *  The generic custom event structure.
- */
-struct SDL_SysWMmsg
-{
-    SDL_version version;
-    int data;
-};
-
-/**
- *  The generic custom window manager information structure.
- */
-struct SDL_SysWMinfo
-{
-    SDL_version version;
-    int data;
-};
-
-#endif /* video driver type */
-
 #endif /* SDL_PROTOTYPES_ONLY */
 
 typedef struct SDL_SysWMinfo SDL_SysWMinfo;