Browse Source

Finished initial window/context backend split.

Camilla Berglund 13 years ago
parent
commit
34d383399c

+ 60 - 44
CMakeLists.txt

@@ -19,6 +19,10 @@ option(GLFW_USE_EGL "Build for EGL and OpenGL ES platform (Currently only X11)"
 if (GLFW_USE_EGL)
 if (GLFW_USE_EGL)
     set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMake/modules)
     set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMake/modules)
     find_package(EGL REQUIRED)
     find_package(EGL REQUIRED)
+
+    set(GLFW_BUILD_EXAMPLES OFF)
+    set(GLFW_BUILD_TESTS OFF)
+    message(STATUS "NOTE: Examples and tests are disabled for EGL")
 else()
 else()
     find_package(OpenGL REQUIRED)
     find_package(OpenGL REQUIRED)
 endif()
 endif()
@@ -47,25 +51,39 @@ if (BUILD_SHARED_LIBS)
 endif()
 endif()
 
 
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
-# Detect and select target platform
+# Detect and select target APIs
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
 if (WIN32)
 if (WIN32)
-    set(_GLFW_WIN32_WGL 1)
-    message(STATUS "Building GLFW for WGL on a Win32 system") 
-elseif (UNIX AND APPLE)
-    set(_GLFW_COCOA_NSGL 1)
-    message(STATUS "Building GLFW for Cocoa and NSOpenGL on Mac OS X")
-elseif (UNIX AND NOT APPLE)
+    set(_GLFW_WIN32 1)
+    message(STATUS "Using Win32 for window creation") 
+
+    if (GLFW_USE_EGL)
+        set(_GLFW_EGL 1)
+        message(STATUS "Using EGL for context creation")
+    else()
+        set(_GLFW_WGL 1)
+        message(STATUS "Using WGL for context creation")
+    endif()
+elseif (APPLE)
+    set(_GLFW_COCOA 1)
+    message(STATUS "Using Cocoa for window creation")
+
+    if (GLFW_USE_EGL)
+        message(FATAL_ERROR "EGL not supported on Mac OS X")
+    else()
+        set(_GLFW_NSGL 1)
+        message(STATUS "Using NSGL for context creation")
+    endif()
+elseif (UNIX)
     set(_GLFW_X11 1)
     set(_GLFW_X11 1)
+    message(STATUS "Using X11 for window creation") 
+
     if (GLFW_USE_EGL)
     if (GLFW_USE_EGL)
-        set(_GLFW_X11_EGL 1)
-        set(GLFW_BUILD_EXAMPLES 0)
-        set(GLFW_BUILD_TESTS 0)
-        message(STATUS "Building GLFW for X11 and EGL on a Unix-like system")
-        message(STATUS "NOTE: Examples and tests are disabled for EGL")
+        set(_GLFW_EGL 1)
+        message(STATUS "Using EGL for context creation")
     else()
     else()
-        set(_GLFW_X11_GLX 1)
-        message(STATUS "Building GLFW for X11 and GLX on a Unix-like system")
+        set(_GLFW_GLX 1)
+        message(STATUS "Using GLX for context creation")
     endif()
     endif()
 else()
 else()
     message(FATAL_ERROR "No supported platform was detected")
     message(FATAL_ERROR "No supported platform was detected")
@@ -74,7 +92,7 @@ endif()
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
 # Set up GLFW for Win32 and WGL on Windows
 # Set up GLFW for Win32 and WGL on Windows
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
-if (_GLFW_WIN32_WGL)
+if (_GLFW_WIN32)
 
 
     # Set up library and include paths
     # Set up library and include paths
     list(APPEND glfw_INCLUDE_DIRS ${OPENGL_INCLUDE_DIR})
     list(APPEND glfw_INCLUDE_DIRS ${OPENGL_INCLUDE_DIR})
@@ -160,16 +178,12 @@ if (_GLFW_X11)
         set(GLFW_PKG_LIBS "${GLFW_PKG_LIBS} -lm")
         set(GLFW_PKG_LIBS "${GLFW_PKG_LIBS} -lm")
     endif()
     endif()
 
 
-    if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
-        set(_GLFW_USE_LINUX_JOYSTICKS 1)
-    endif()
-
 endif()
 endif()
 
 
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
 # GLX Context
 # GLX Context
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
-if (_GLFW_X11_GLX)
+if (_GLFW_GLX)
 
 
     # Set up library and include paths
     # Set up library and include paths
     list(APPEND glfw_INCLUDE_DIRS ${OPENGL_INCLUDE_DIR})
     list(APPEND glfw_INCLUDE_DIRS ${OPENGL_INCLUDE_DIR})
@@ -223,42 +237,44 @@ endif()
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
 # EGL Context
 # EGL Context
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
-if (_GLFW_X11_EGL)
+if (_GLFW_EGL)
 
 
     # Set up library and include paths
     # Set up library and include paths
     list(APPEND glfw_INCLUDE_DIRS ${EGL_INCLUDE_DIR})
     list(APPEND glfw_INCLUDE_DIRS ${EGL_INCLUDE_DIR})
     list(APPEND glfw_LIBRARIES ${EGL_LIBRARY})
     list(APPEND glfw_LIBRARIES ${EGL_LIBRARY})
 
 
-    set(GLFW_PKG_DEPS "${GLFW_PKG_DEPS} egl")
+    set(CMAKE_REQUIRED_LIBRARIES ${EGL_LIBRARY})
 
 
-    include(CheckFunctionExists)
+    if (_GLFW_X11)
+        set(GLFW_PKG_DEPS "${GLFW_PKG_DEPS} egl")
 
 
-    set(CMAKE_REQUIRED_LIBRARIES ${EGL_LIBRARY})
+        include(CheckFunctionExists)
 
 
-    check_function_exists(eglGetProcAddress _GLFW_HAS_EGLGETPROCADDRESS)
+        check_function_exists(eglGetProcAddress _GLFW_HAS_EGLGETPROCADDRESS)
 
 
-    if (NOT _GLFW_HAS_EGLGETPROCADDRESS)
-        message(WARNING "No eglGetProcAddress found")
+        if (NOT _GLFW_HAS_EGLGETPROCADDRESS)
+            message(WARNING "No eglGetProcAddress found")
 
 
-        # Check for dlopen support as a fallback
+            # Check for dlopen support as a fallback
 
 
-        find_library(DL_LIBRARY dl)
-        mark_as_advanced(DL_LIBRARY)
-        if (DL_LIBRARY)
-            set(CMAKE_REQUIRED_LIBRARIES ${DL_LIBRARY})
-        else()
-            set(CMAKE_REQUIRED_LIBRARIES "")
-        endif()
+            find_library(DL_LIBRARY dl)
+            mark_as_advanced(DL_LIBRARY)
+            if (DL_LIBRARY)
+                set(CMAKE_REQUIRED_LIBRARIES ${DL_LIBRARY})
+            else()
+                set(CMAKE_REQUIRED_LIBRARIES "")
+            endif()
 
 
-        check_function_exists(dlopen _GLFW_HAS_DLOPEN)
+            check_function_exists(dlopen _GLFW_HAS_DLOPEN)
 
 
-        if (NOT _GLFW_HAS_DLOPEN)
-            message(FATAL_ERROR "No entry point retrieval mechanism found")
-        endif()
+            if (NOT _GLFW_HAS_DLOPEN)
+                message(FATAL_ERROR "No entry point retrieval mechanism found")
+            endif()
 
 
-        if (DL_LIBRARY)
-            list(APPEND glfw_LIBRARIES ${DL_LIBRARY})
-            set(GLFW_PKG_LIBS "${GLFW_PKG_LIBS} -ldl")
+            if (DL_LIBRARY)
+                list(APPEND glfw_LIBRARIES ${DL_LIBRARY})
+                set(GLFW_PKG_LIBS "${GLFW_PKG_LIBS} -ldl")
+            endif()
         endif()
         endif()
     endif()
     endif()
 
 
@@ -267,7 +283,7 @@ endif()
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
 # Set up GLFW for Cocoa and NSOpenGL on Mac OS X
 # Set up GLFW for Cocoa and NSOpenGL on Mac OS X
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
-if (_GLFW_COCOA_NSGL)
+if (_GLFW_COCOA AND _GLFW_NSGL)
         
         
     option(GLFW_BUILD_UNIVERSAL "Build GLFW as a Universal Binary" OFF)
     option(GLFW_BUILD_UNIVERSAL "Build GLFW as a Universal Binary" OFF)
 
 
@@ -349,7 +365,7 @@ install(FILES COPYING.txt readme.html
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
 # Create and install pkg-config file on supported platforms
 # Create and install pkg-config file on supported platforms
 #--------------------------------------------------------------------
 #--------------------------------------------------------------------
-if (_GLFW_X11_GLX OR _GLFW_COCOA_NSGL)
+if (UNIX)
     configure_file(${GLFW_SOURCE_DIR}/src/glfw3.pc.in
     configure_file(${GLFW_SOURCE_DIR}/src/glfw3.pc.in
                    ${GLFW_BINARY_DIR}/src/glfw3.pc @ONLY)
                    ${GLFW_BINARY_DIR}/src/glfw3.pc @ONLY)
 
 

+ 27 - 19
src/CMakeLists.txt

@@ -10,11 +10,11 @@ set(common_HEADERS ${GLFW_SOURCE_DIR}/include/GL/glfw3.h internal.h)
 set(common_SOURCES clipboard.c fullscreen.c gamma.c init.c input.c
 set(common_SOURCES clipboard.c fullscreen.c gamma.c init.c input.c
                    joystick.c opengl.c time.c window.c)
                    joystick.c opengl.c time.c window.c)
 
 
-if (_GLFW_COCOA_NSGL)
+if (_GLFW_COCOA)
     set(glfw_HEADERS ${common_HEADERS} cocoa_platform.h)
     set(glfw_HEADERS ${common_HEADERS} cocoa_platform.h)
     set(glfw_SOURCES ${common_SOURCES} cocoa_clipboard.m cocoa_fullscreen.m
     set(glfw_SOURCES ${common_SOURCES} cocoa_clipboard.m cocoa_fullscreen.m
-                     cocoa_gamma.c cocoa_init.m cocoa_joystick.m
-                     cocoa_opengl.m cocoa_time.c cocoa_window.m)
+                     cocoa_gamma.c cocoa_init.m cocoa_joystick.m cocoa_time.c
+                     cocoa_window.m)
 
 
     if (GLFW_NATIVE_API)
     if (GLFW_NATIVE_API)
         list(APPEND glfw_SOURCES cocoa_native.m)
         list(APPEND glfw_SOURCES cocoa_native.m)
@@ -22,30 +22,38 @@ if (_GLFW_COCOA_NSGL)
 
 
     # For some reason, CMake doesn't know about .m
     # For some reason, CMake doesn't know about .m
     set_source_files_properties(${glfw_SOURCES} PROPERTIES LANGUAGE C)
     set_source_files_properties(${glfw_SOURCES} PROPERTIES LANGUAGE C)
-elseif (_GLFW_WIN32_WGL)
+elseif (_GLFW_WIN32)
     set(glfw_HEADERS ${common_HEADERS} win32_platform.h)
     set(glfw_HEADERS ${common_HEADERS} win32_platform.h)
-    set(glfw_SOURCES ${common_SOURCES} wgl_opengl.c win32_clipboard.c
-                     win32_fullscreen.c win32_gamma.c win32_init.c
-                     win32_joystick.c win32_time.c win32_window.c)
+    set(glfw_SOURCES ${common_SOURCES} win32_clipboard.c win32_fullscreen.c
+                     win32_gamma.c win32_init.c win32_joystick.c win32_time.c
+                     win32_window.c)
 
 
     if (GLFW_NATIVE_API)
     if (GLFW_NATIVE_API)
         list(APPEND glfw_SOURCES win32_native.c)
         list(APPEND glfw_SOURCES win32_native.c)
     endif()
     endif()
-elseif (_GLFW_X11_GLX)
+elseif (_GLFW_X11)
     set(glfw_HEADERS ${common_HEADERS} x11_platform.h)
     set(glfw_HEADERS ${common_HEADERS} x11_platform.h)
-    set(glfw_SOURCES ${common_SOURCES} glx_opengl.c x11_clipboard.c
-                     x11_fullscreen.c x11_gamma.c x11_init.c x11_joystick.c
-                     x11_keysym2unicode.c x11_time.c x11_window.c)
+    set(glfw_SOURCES ${common_SOURCES} x11_clipboard.c x11_fullscreen.c
+                     x11_gamma.c x11_init.c x11_joystick.c x11_keysym2unicode.c
+                     x11_time.c x11_window.c)
 
 
     if (GLFW_NATIVE_API)
     if (GLFW_NATIVE_API)
         list(APPEND glfw_SOURCES x11_native.c)
         list(APPEND glfw_SOURCES x11_native.c)
     endif()
     endif()
-elseif (_GLFW_X11_EGL)
-    set(glfw_HEADERS ${common_HEADERS} x11_platform.h egl_platform.h)
-    set(glfw_SOURCES ${common_SOURCES} egl_opengl.c x11_clipboard.c
-                     x11_fullscreen.c x11_gamma.c x11_init.c
-                     x11_joystick.c x11_keysym2unicode.c x11_time.c
-                     x11_window.c)
+endif()
+
+if (_GLFW_EGL)
+    list(APPEND glfw_HEADERS ${common_HEADERS} egl_platform.h)
+    list(APPEND glfw_SOURCES ${common_SOURCES} egl_opengl.c)
+elseif (_GLFW_NSGL)
+    list(APPEND glfw_HEADERS ${common_HEADERS} nsgl_platform.h)
+    list(APPEND glfw_SOURCES ${common_SOURCES} nsgl_opengl.c)
+elseif (_GLFW_WGL)
+    list(APPEND glfw_HEADERS ${common_HEADERS} wgl_platform.h)
+    list(APPEND glfw_SOURCES ${common_SOURCES} wgl_opengl.c)
+elseif (_GLFW_X11)
+    list(APPEND glfw_HEADERS ${common_HEADERS} glx_platform.h)
+    list(APPEND glfw_SOURCES ${common_SOURCES} glx_opengl.c)
 endif()
 endif()
 
 
 add_library(glfw ${glfw_SOURCES} ${glfw_HEADERS})
 add_library(glfw ${glfw_SOURCES} ${glfw_HEADERS})
@@ -58,7 +66,7 @@ if (BUILD_SHARED_LIBS)
         set_target_properties(glfw PROPERTIES SOVERSION ${GLFW_VERSION_MAJOR})
         set_target_properties(glfw PROPERTIES SOVERSION ${GLFW_VERSION_MAJOR})
     endif()
     endif()
 
 
-    if (_GLFW_WIN32_WGL)
+    if (_GLFW_WIN32)
         # The GLFW DLL needs a special compile-time macro and import library name
         # The GLFW DLL needs a special compile-time macro and import library name
         set_target_properties(glfw PROPERTIES PREFIX "" IMPORT_PREFIX "")
         set_target_properties(glfw PROPERTIES PREFIX "" IMPORT_PREFIX "")
 
 
@@ -67,7 +75,7 @@ if (BUILD_SHARED_LIBS)
         else()
         else()
             set_target_properties(glfw PROPERTIES IMPORT_SUFFIX "dll.lib")
             set_target_properties(glfw PROPERTIES IMPORT_SUFFIX "dll.lib")
         endif()
         endif()
-    elseif (_GLFW_COCOA_NSGL)
+    elseif (_GLFW_COCOA)
         # Append -fno-common to the compile flags to work around a bug in the Apple GCC
         # Append -fno-common to the compile flags to work around a bug in the Apple GCC
         get_target_property(glfw_CFLAGS glfw COMPILE_FLAGS)
         get_target_property(glfw_CFLAGS glfw COMPILE_FLAGS)
         if (NOT glfw_CFLAGS)
         if (NOT glfw_CFLAGS)

+ 8 - 28
src/cocoa_platform.h

@@ -1,6 +1,6 @@
 //========================================================================
 //========================================================================
 // GLFW - An OpenGL library
 // GLFW - An OpenGL library
-// Platform:    Cocoa/NSOpenGL
+// Platform:    Cocoa
 // API Version: 3.0
 // API Version: 3.0
 // WWW:         http://www.glfw.org/
 // WWW:         http://www.glfw.org/
 //------------------------------------------------------------------------
 //------------------------------------------------------------------------
@@ -27,13 +27,12 @@
 //
 //
 //========================================================================
 //========================================================================
 
 
-#ifndef _platform_h_
-#define _platform_h_
+#ifndef _cocoa_platform_h_
+#define _cocoa_platform_h_
 
 
 
 
 #include <stdint.h>
 #include <stdint.h>
 
 
-
 #if defined(__OBJC__)
 #if defined(__OBJC__)
 #import <Cocoa/Cocoa.h>
 #import <Cocoa/Cocoa.h>
 #else
 #else
@@ -41,12 +40,13 @@
 typedef void* id;
 typedef void* id;
 #endif
 #endif
 
 
+#if defined(_GLFW_NSGL)
+ #include "nsgl_platform.h"
+#endif
+
 #define _GLFW_PLATFORM_WINDOW_STATE         _GLFWwindowNS  NS
 #define _GLFW_PLATFORM_WINDOW_STATE         _GLFWwindowNS  NS
 #define _GLFW_PLATFORM_LIBRARY_WINDOW_STATE _GLFWlibraryNS NS
 #define _GLFW_PLATFORM_LIBRARY_WINDOW_STATE _GLFWlibraryNS NS
 
 
-#define _GLFW_PLATFORM_CONTEXT_STATE        _GLFWcontextNSGL NSGL
-#define _GLFW_PLATFORM_LIBRARY_OPENGL_STATE _GLFWlibraryNSGL NSGL
-
 
 
 //========================================================================
 //========================================================================
 // GLFW platform specific types
 // GLFW platform specific types
@@ -58,16 +58,6 @@ typedef void* id;
 typedef intptr_t GLFWintptr;
 typedef intptr_t GLFWintptr;
 
 
 
 
-//------------------------------------------------------------------------
-// Platform-specific OpenGL context structure
-//------------------------------------------------------------------------
-typedef struct _GLFWcontextNSGL
-{
-    id           pixelFormat;
-    id	         context;
-} _GLFWcontextNSGL;
-
-
 //------------------------------------------------------------------------
 //------------------------------------------------------------------------
 // Platform-specific window structure
 // Platform-specific window structure
 //------------------------------------------------------------------------
 //------------------------------------------------------------------------
@@ -99,16 +89,6 @@ typedef struct _GLFWlibraryNS
 } _GLFWlibraryNS;
 } _GLFWlibraryNS;
 
 
 
 
-//------------------------------------------------------------------------
-// Platform-specific library global data for NSGL
-//------------------------------------------------------------------------
-typedef struct _GLFWlibraryNSGL
-{
-    // dlopen handle for dynamically loading OpenGL extension entry points
-    void*            framework;
-} _GLFWlibraryNSGL;
-
-
 //========================================================================
 //========================================================================
 // Prototypes for platform specific internal functions
 // Prototypes for platform specific internal functions
 //========================================================================
 //========================================================================
@@ -128,4 +108,4 @@ void _glfwRestoreVideoMode(void);
 int _glfwInitOpenGL(void);
 int _glfwInitOpenGL(void);
 void _glfwTerminateOpenGL(void);
 void _glfwTerminateOpenGL(void);
 
 
-#endif // _platform_h_
+#endif // _cocoa_platform_h_

+ 15 - 8
src/config.h.in

@@ -35,14 +35,21 @@
 // it.  Instead, you should modify the config.h.in file.
 // it.  Instead, you should modify the config.h.in file.
 //========================================================================
 //========================================================================
 
 
-// Define this to 1 if building GLFW for X11/GLX
-#cmakedefine _GLFW_X11_GLX
-// Define this to 1 if building GLFW for X11/EGL
-#cmakedefine _GLFW_X11_EGL
-// Define this to 1 if building GLFW for Win32/WGL
-#cmakedefine _GLFW_WIN32_WGL
-// Define this to 1 if building GLFW for Cocoa/NSOpenGL
-#cmakedefine _GLFW_COCOA_NSGL
+// Define this to 1 if building GLFW for X11
+#cmakedefine _GLFW_X11
+// Define this to 1 if building GLFW for Win32
+#cmakedefine _GLFW_WIN32
+// Define this to 1 if building GLFW for Cocoa
+#cmakedefine _GLFW_COCOA
+
+// Define this to 1 if building GLFW for EGL
+#cmakedefine _GLFW_EGL
+// Define this to 1 if building GLFW for GLX
+#cmakedefine _GLFW_GLX
+// Define this to 1 if building GLFW for WGL
+#cmakedefine _GLFW_WGL
+// Define this to 1 if building GLFW for NSGL
+#cmakedefine _GLFW_NSGL
 
 
 // Define this to 1 if building as a shared library / dynamic library / DLL
 // Define this to 1 if building as a shared library / dynamic library / DLL
 #cmakedefine _GLFW_BUILD_DLL
 #cmakedefine _GLFW_BUILD_DLL

+ 1 - 1
src/egl_opengl.c

@@ -208,7 +208,7 @@ static int createContext(_GLFWwindow* window,
     // Retrieve the corresponding visual
     // Retrieve the corresponding visual
     // NOTE: This is the only non-portable code in this file.
     // NOTE: This is the only non-portable code in this file.
     // Maybe it would not hurt too much to add #ifdefs for different platforms?
     // Maybe it would not hurt too much to add #ifdefs for different platforms?
-#if defined(_GLFW_X11_EGL)
+#if defined(_GLFW_X11)
     {
     {
         int mask;
         int mask;
         EGLint redBits, greenBits, blueBits, alphaBits, visualID = 0;
         EGLint redBits, greenBits, blueBits, alphaBits, visualID = 0;

+ 1 - 1
src/egl_platform.h

@@ -71,7 +71,7 @@ typedef struct _GLFWcontextEGL
    EGLContext     context;
    EGLContext     context;
    EGLSurface     surface;
    EGLSurface     surface;
 
 
-#if defined(_GLFW_X11_EGL)
+#if defined(_GLFW_X11)
    XVisualInfo*   visual;
    XVisualInfo*   visual;
 #endif
 #endif
 } _GLFWcontextEGL;
 } _GLFWcontextEGL;

+ 3 - 3
src/internal.h

@@ -65,11 +65,11 @@ typedef struct _GLFWlibrary     _GLFWlibrary;
 // extensions and not all operating systems come with an up-to-date version
 // extensions and not all operating systems come with an up-to-date version
 #include "../support/GL/glext.h"
 #include "../support/GL/glext.h"
 
 
-#if defined(_GLFW_COCOA_NSGL)
+#if defined(_GLFW_COCOA)
  #include "cocoa_platform.h"
  #include "cocoa_platform.h"
-#elif defined(_GLFW_WIN32_WGL)
+#elif defined(_GLFW_WIN32)
  #include "win32_platform.h"
  #include "win32_platform.h"
-#elif defined(_GLFW_X11_GLX) || defined(_GLFW_X11_EGL)
+#elif defined(_GLFW_X11)
  #include "x11_platform.h"
  #include "x11_platform.h"
 #else
 #else
  #error "No supported platform selected"
  #error "No supported platform selected"

+ 0 - 0
src/cocoa_opengl.m → src/nsgl_opengl.m


+ 62 - 0
src/nsgl_platform.h

@@ -0,0 +1,62 @@
+//========================================================================
+// GLFW - An OpenGL library
+// Platform:    NSOpenGL
+// API Version: 3.0
+// WWW:         http://www.glfw.org/
+//------------------------------------------------------------------------
+// Copyright (c) 2009-2010 Camilla Berglund <[email protected]>
+//
+// This software is provided 'as-is', without any express or implied
+// warranty. In no event will the authors be held liable for any damages
+// arising from the use of this software.
+//
+// Permission is granted to anyone to use this software for any purpose,
+// including commercial applications, and to alter it and redistribute it
+// freely, subject to the following restrictions:
+//
+// 1. The origin of this software must not be misrepresented; you must not
+//    claim that you wrote the original software. If you use this software
+//    in a product, an acknowledgment in the product documentation would
+//    be appreciated but is not required.
+//
+// 2. Altered source versions must be plainly marked as such, and must not
+//    be misrepresented as being the original software.
+//
+// 3. This notice may not be removed or altered from any source
+//    distribution.
+//
+//========================================================================
+
+#ifndef _nsgl_platform_h_
+#define _nsgl_platform_h_
+
+
+#define _GLFW_PLATFORM_CONTEXT_STATE        _GLFWcontextNSGL NSGL
+#define _GLFW_PLATFORM_LIBRARY_OPENGL_STATE _GLFWlibraryNSGL NSGL
+
+
+//========================================================================
+// GLFW platform specific types
+//========================================================================
+
+//------------------------------------------------------------------------
+// Platform-specific OpenGL context structure
+//------------------------------------------------------------------------
+typedef struct _GLFWcontextNSGL
+{
+    id           pixelFormat;
+    id	         context;
+} _GLFWcontextNSGL;
+
+
+//------------------------------------------------------------------------
+// Platform-specific library global data for NSGL
+//------------------------------------------------------------------------
+typedef struct _GLFWlibraryNSGL
+{
+    // dlopen handle for dynamically loading OpenGL extension entry points
+    void*            framework;
+} _GLFWlibraryNSGL;
+
+
+#endif // _nsgl_platform_h_

+ 5 - 0
src/win32_init.c

@@ -232,6 +232,11 @@ int _glfwPlatformTerminate(void)
 const char* _glfwPlatformGetVersionString(void)
 const char* _glfwPlatformGetVersionString(void)
 {
 {
     const char* version = _GLFW_VERSION_FULL
     const char* version = _GLFW_VERSION_FULL
+#if defined(_GLFW_WGL)
+        " WGL"
+#elif defined(_GLFW_EGL)
+        " EGL"
+#endif
 #if defined(__MINGW32__)
 #if defined(__MINGW32__)
         " MinGW"
         " MinGW"
 #elif defined(_MSC_VER)
 #elif defined(_MSC_VER)

+ 2 - 2
src/win32_platform.h

@@ -105,9 +105,9 @@ typedef DWORD (WINAPI * TIMEGETTIME_T) (void);
 #define _GLFW_WNDCLASSNAME L"GLFW30"
 #define _GLFW_WNDCLASSNAME L"GLFW30"
 
 
 
 
-#if defined(_GLFW_WIN32_WGL)
+#if defined(_GLFW_WGL)
  #include "wgl_platform.h"
  #include "wgl_platform.h"
-#elif defined(_GLFW_WIN32_EGL)
+#elif defined(_GLFW_EGL)
  #define _GLFW_EGL_NATIVE_WINDOW  window->Win32.handle
  #define _GLFW_EGL_NATIVE_WINDOW  window->Win32.handle
  #define _GLFW_EGL_NATIVE_DISPLAY NULL
  #define _GLFW_EGL_NATIVE_DISPLAY NULL
  #include "egl_platform.h"
  #include "egl_platform.h"

+ 1 - 1
src/x11_fullscreen.c

@@ -449,7 +449,7 @@ GLFWvidmode* _glfwPlatformGetVideoModes(int* found)
     rgbs = (int*) malloc(sizeof(int) * visualCount);
     rgbs = (int*) malloc(sizeof(int) * visualCount);
     rgbCount = 0;
     rgbCount = 0;
 
 
-#if !defined(_GLFW_X11_EGL)
+#if defined(_GLFW_GLX)
     for (i = 0;  i < visualCount;  i++)
     for (i = 0;  i < visualCount;  i++)
     {
     {
         int gl, rgba, rgb, r, g, b;
         int gl, rgba, rgb, r, g, b;

+ 2 - 2
src/x11_init.c

@@ -693,9 +693,9 @@ int _glfwPlatformTerminate(void)
 const char* _glfwPlatformGetVersionString(void)
 const char* _glfwPlatformGetVersionString(void)
 {
 {
     const char* version = _GLFW_VERSION_FULL
     const char* version = _GLFW_VERSION_FULL
-#if defined(_GLFW_X11_GLX)
+#if defined(_GLFW_GLX)
         " GLX"
         " GLX"
-#elif defined(_GLFW_X11_EGL)
+#elif defined(_GLFW_EGL)
         " EGL"
         " EGL"
 #endif
 #endif
 #if defined(_GLFW_HAS_XRANDR)
 #if defined(_GLFW_HAS_XRANDR)

+ 2 - 2
src/x11_platform.h

@@ -53,10 +53,10 @@
  #include <X11/XKBlib.h>
  #include <X11/XKBlib.h>
 #endif
 #endif
 
 
-#if defined(_GLFW_X11_GLX)
+#if defined(_GLFW_GLX)
  #define _GLFW_X11_CONTEXT_VISUAL window->GLX.visual
  #define _GLFW_X11_CONTEXT_VISUAL window->GLX.visual
  #include "glx_platform.h"
  #include "glx_platform.h"
-#elif defined(_GLFW_X11_EGL)
+#elif defined(_GLFW_EGL)
  #define _GLFW_X11_CONTEXT_VISUAL window->EGL.visual
  #define _GLFW_X11_CONTEXT_VISUAL window->EGL.visual
  #define _GLFW_EGL_NATIVE_WINDOW  window->X11.handle
  #define _GLFW_EGL_NATIVE_WINDOW  window->X11.handle
  #define _GLFW_EGL_NATIVE_DISPLAY _glfwLibrary.X11.display
  #define _GLFW_EGL_NATIVE_DISPLAY _glfwLibrary.X11.display