From 7e0ca6705b0a687a15acde6a90b908f5b6f138d6 Mon Sep 17 00:00:00 2001
From: Hanmac
Date: Tue, 31 Jan 2012 10:00:52 +0100
Subject: [PATCH 01/62] Added use of XkbKeycodeToKeysym when Xkb is available.
---
src/x11_init.c | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/src/x11_init.c b/src/x11_init.c
index 4d3c0f74f..3ed9ab135 100644
--- a/src/x11_init.c
+++ b/src/x11_init.c
@@ -79,7 +79,11 @@ static int keyCodeToGLFWKeyCode(int keyCode)
// Note: This way we always force "NumLock = ON", which is intentional
// since the returned key code should correspond to a physical
// location.
+#if defined(_GLFW_HAS_XKB)
+ keySym = XkbKeycodeToKeysym(_glfwLibrary.X11.display, keyCode, 1, 0);
+#else
keySym = XKeycodeToKeysym(_glfwLibrary.X11.display, keyCode, 1);
+#endif
switch (keySym)
{
case XK_KP_0: return GLFW_KEY_KP_0;
@@ -102,7 +106,12 @@ static int keyCodeToGLFWKeyCode(int keyCode)
// Now try pimary keysym for function keys (non-printable keys). These
// should not be layout dependent (i.e. US layout and international
// layouts should give the same result).
+#if defined(_GLFW_HAS_XKB)
+ keySym = XkbKeycodeToKeysym(_glfwLibrary.X11.display, keyCode, 0, 0);
+#else
keySym = XKeycodeToKeysym(_glfwLibrary.X11.display, keyCode, 0);
+#endif
+
switch (keySym)
{
case XK_Escape: return GLFW_KEY_ESCAPE;
From a202799f4577ef8ec5941709c9f4d05c08b19940 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 26 Feb 2012 03:24:42 +0100
Subject: [PATCH 02/62] Renamed AppKit init function.
---
src/cocoa_window.m | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/cocoa_window.m b/src/cocoa_window.m
index 221dcc5e9..578d1c41b 100644
--- a/src/cocoa_window.m
+++ b/src/cocoa_window.m
@@ -595,7 +595,7 @@ static void setUpMenuBar(void)
//========================================================================
// Initialize the Cocoa Application Kit
//========================================================================
-static GLboolean initializeCocoa(void)
+static GLboolean initializeAppKit(void)
{
if (NSApp)
return GL_TRUE;
@@ -813,7 +813,7 @@ int _glfwPlatformOpenWindow(_GLFWwindow* window,
const _GLFWwndconfig* wndconfig,
const _GLFWfbconfig* fbconfig)
{
- if (!initializeCocoa())
+ if (!initializeAppKit())
return GL_FALSE;
// We can only have one application delegate, but we only allocate it the
From f47f5d9f59623e9a46f095c0840413ac3cc631af Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 26 Feb 2012 18:41:33 +0100
Subject: [PATCH 03/62] Updated changelog.
---
readme.html | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/readme.html b/readme.html
index 5ab86c64c..19c438f5b 100644
--- a/readme.html
+++ b/readme.html
@@ -869,7 +869,8 @@ their skills. Special thanks go out to:
Tristam MacDonald, for his bug reports and feedback on the Cocoa port
- Hans 'Hanmac' Mackowiak, for adding UTF-8 window title support on X11
+ Hans 'Hanmac' Mackowiak, for adding UTF-8 window title support on X11 and
+ a fix for the Xkb support
David Medlock, for doing the initial Lua port
From 98fbc07aa4d73e61b514f90f7678fa542799f0a6 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Mon, 27 Feb 2012 02:21:26 +0100
Subject: [PATCH 04/62] Fixed GLFW_WINDOW_NO_RESIZE state not being saved.
---
readme.html | 2 ++
src/cocoa_window.m | 2 ++
src/win32_window.c | 1 +
3 files changed, 5 insertions(+)
diff --git a/readme.html b/readme.html
index 19c438f5b..d23f982ac 100644
--- a/readme.html
+++ b/readme.html
@@ -315,6 +315,7 @@ version of GLFW.
[Cocoa] Bugfix: The loop condition for saving video modes used the wrong index variable
[Cocoa] Bugfix: The OpenGL framework was not retrieved, making glfwGetProcAddress crash
[Cocoa] Bugfix: glfwInit changed the current directory for unbundled executables
+ [Cocoa] Bugfix: The GLFW_WINDOW_NO_RESIZE window parameter was always zero
[X11] Added support for the GLX_EXT_swap_control extension as an alternative to GLX_SGI_swap_control
[X11] Added the POSIX CLOCK_MONOTONIC time source as the preferred method
[X11] Added dependency on libm, where present
@@ -328,6 +329,7 @@ version of GLFW.
[Win32] Bugfix: Software rasterizer pixel formats were not discarded by the WGL_ARB_pixel_format code path
[Win32] Bugfix: The array for WGL context attributes was too small and could overflow
[Win32] Bugfix: Alt+F4 hot key was not translated into WM_CLOSE
+ [Win32] Bugfix: The GLFW_WINDOW_NO_RESIZE window parameter was always zero
v2.7
diff --git a/src/cocoa_window.m b/src/cocoa_window.m
index 221dcc5e9..bf3b0fbc5 100644
--- a/src/cocoa_window.m
+++ b/src/cocoa_window.m
@@ -816,6 +816,8 @@ int _glfwPlatformOpenWindow(_GLFWwindow* window,
if (!initializeCocoa())
return GL_FALSE;
+ window->resizable = wndconfig->resizable;
+
// We can only have one application delegate, but we only allocate it the
// first time we create a window to keep all window code in this file
if (_glfwLibrary.NS.delegate == nil)
diff --git a/src/win32_window.c b/src/win32_window.c
index 24788a334..0f3c67d00 100644
--- a/src/win32_window.c
+++ b/src/win32_window.c
@@ -1441,6 +1441,7 @@ int _glfwPlatformOpenWindow(_GLFWwindow* window,
GLboolean recreateContext = GL_FALSE;
window->Win32.desiredRefreshRate = wndconfig->refreshRate;
+ window->resizable = wndconfig->resizable;
if (!_glfwLibrary.Win32.classAtom)
{
From a82598ea24d08b82c9e28f3943a70e5bd7ae1f5f Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Wed, 29 Feb 2012 19:52:34 +0100
Subject: [PATCH 05/62] Disable dynamic loading for Win32 DLL.
---
src/CMakeLists.txt | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index b5569c40c..79a5c3141 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -47,9 +47,10 @@ set_target_properties(libglfwStatic libglfwShared PROPERTIES
OUTPUT_NAME glfw)
if(WIN32)
+ target_link_libraries(libglfwShared winmm)
# The GLFW DLL needs a special compile-time macro and import library name
set_target_properties(libglfwShared PROPERTIES
- DEFINE_SYMBOL GLFW_BUILD_DLL
+ COMPILE_DEFINITIONS "GLFW_BUILD_DLL;_GLFW_NO_DLOAD_GDI32;_GLFW_NO_DLOAD_WINMM"
PREFIX ""
IMPORT_PREFIX ""
IMPORT_SUFFIX "dll.lib")
From cd7b9b1568a8145bb22393fed1be27223a6f0d3b Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Wed, 29 Feb 2012 20:15:39 +0100
Subject: [PATCH 06/62] CMake file formatting.
---
CMakeLists.txt | 28 +++++++++++++---------------
examples/CMakeLists.txt | 10 +++++-----
src/CMakeLists.txt | 20 ++++++++++----------
tests/CMakeLists.txt | 4 ++--
4 files changed, 30 insertions(+), 32 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5e6554c52..a44543659 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -27,7 +27,7 @@ if (WIN32)
# Set up library and include paths
list(APPEND GLFW_INCLUDE_DIR ${OPENGL_INCLUDE_DIR})
list(APPEND GLFW_LIBRARIES ${OPENGL_gl_LIBRARY})
-endif (WIN32)
+endif()
#--------------------------------------------------------------------
# Set up GLFW for Xlib and GLX on Unix-like systems with X Windows
@@ -47,12 +47,12 @@ if (UNIX AND NOT APPLE)
find_library(MATH_LIBRARY m)
if (MATH_LIBRARY)
list(APPEND GLFW_LIBRARIES ${MATH_LIBRARY})
- endif(MATH_LIBRARY)
+ endif()
find_library(RT_LIBRARY rt)
if (RT_LIBRARY)
list(APPEND GLFW_LIBRARIES ${RT_LIBRARY})
- endif(RT_LIBRARY)
+ endif()
include(CheckFunctionExists)
include(CheckSymbolExists)
@@ -83,24 +83,22 @@ if (UNIX AND NOT APPLE)
if (NOT _GLFW_HAS_GLXGETPROCADDRESS)
check_function_exists(glXGetProcAddressARB _GLFW_HAS_GLXGETPROCADDRESSARB)
- endif (NOT _GLFW_HAS_GLXGETPROCADDRESS)
+ endif()
if (NOT _GLFW_HAS_GLXGETPROCADDRESS AND NOT _GLFW_HAS_GLXGETPROCADDRESSARB)
check_function_exists(glXGetProcAddressEXT _GLFW_HAS_GLXGETPROCADDRESSEXT)
- endif (NOT _GLFW_HAS_GLXGETPROCADDRESS AND NOT _GLFW_HAS_GLXGETPROCADDRESSARB)
+ endif()
if (NOT _GLFW_HAS_GLXGETPROCADDRESS AND
NOT _GLFW_HAS_GLXGETPROCADDRESSARB AND
NOT _GLFW_HAS_GLXGETPROCADDRESSEXT)
message(WARNING "No glXGetProcAddressXXX variant found")
- endif (NOT _GLFW_HAS_GLXGETPROCADDRESS AND
- NOT _GLFW_HAS_GLXGETPROCADDRESSARB AND
- NOT _GLFW_HAS_GLXGETPROCADDRESSEXT)
+ endif()
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
set(_GLFW_USE_LINUX_JOYSTICKS 1)
- endif (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
-endif(UNIX AND NOT APPLE)
+ endif()
+endif()
#--------------------------------------------------------------------
# Set up GLFW for Cocoa and NSOpenGL on Mac OS X
@@ -121,7 +119,7 @@ if (UNIX AND APPLE)
set(CMAKE_C_FLAGS "-mmacosx-version-min=10.5")
else(GLFW_BUILD_UNIVERSAL)
message(STATUS "Building GLFW only for the native architecture")
- endif(GLFW_BUILD_UNIVERSAL)
+ endif()
# Set up library and include paths
find_library(COCOA_FRAMEWORK Cocoa)
@@ -131,7 +129,7 @@ if (UNIX AND APPLE)
list(APPEND GLFW_LIBRARIES ${OPENGL_gl_LIBRARY})
list(APPEND GLFW_LIBRARIES ${IOKIT_FRAMEWORK})
list(APPEND GLFW_LIBRARIES ${CORE_FOUNDATION_FRAMEWORK})
-endif(UNIX AND APPLE)
+endif()
#--------------------------------------------------------------------
# Add subdirectories
@@ -140,11 +138,11 @@ add_subdirectory(src)
if (GLFW_BUILD_EXAMPLES)
add_subdirectory(examples)
-endif(GLFW_BUILD_EXAMPLES)
+endif()
if (GLFW_BUILD_TESTS)
add_subdirectory(tests)
-endif(GLFW_BUILD_TESTS)
+endif()
#--------------------------------------------------------------------
# Create shared configuration header
@@ -175,7 +173,7 @@ configure_file("${GLFW_SOURCE_DIR}/docs/Doxyfile.in"
# Uninstall operation
# Don't generate this target if a higher-level project already has
#--------------------------------------------------------------------
-if(NOT TARGET uninstall)
+if (NOT TARGET uninstall)
configure_file(${GLFW_SOURCE_DIR}/cmake_uninstall.cmake.in
${GLFW_BINARY_DIR}/cmake_uninstall.cmake IMMEDIATE @ONLY)
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index d511b22d5..37b7f754e 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -7,14 +7,14 @@ include_directories(${GLFW_SOURCE_DIR}/include
${GLFW_SOURCE_DIR}/support
${OPENGL_INCLUDE_DIR})
-if(APPLE)
+if (APPLE)
# Set fancy names for bundles
add_executable(Boing MACOSX_BUNDLE boing.c)
add_executable(Gears MACOSX_BUNDLE gears.c)
add_executable("Split View" MACOSX_BUNDLE splitview.c)
add_executable(Triangle MACOSX_BUNDLE triangle.c)
add_executable(Wave MACOSX_BUNDLE wave.c)
-else(APPLE)
+else()
# Set boring names for executables
add_executable(boing WIN32 boing.c)
add_executable(gears WIN32 gears.c)
@@ -22,13 +22,13 @@ else(APPLE)
add_executable(splitview WIN32 splitview.c)
add_executable(triangle WIN32 triangle.c)
add_executable(wave WIN32 wave.c)
-endif(APPLE)
+endif()
set(WINDOWS_BINARIES boing gears heightmap splitview triangle wave)
-if(MSVC)
+if (MSVC)
# Tell MSVC to use main instead of WinMain for Windows subsystem executables
set_target_properties(${WINDOWS_BINARIES} PROPERTIES
LINK_FLAGS "/ENTRY:mainCRTStartup")
-endif(MSVC)
+endif()
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 79a5c3141..bdc4d5fe7 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,15 +1,15 @@
if(UNIX)
- if(_GLFW_HAS_XRANDR)
+ if (_GLFW_HAS_XRANDR)
set(GLFW_PKGLIBS "${GLFW_PKGLIBS} xrandr")
- endif(_GLFW_HAS_XRANDR)
- if(_GLFW_HAS_XF86VIDMODE)
+ endif()
+ if (_GLFW_HAS_XF86VIDMODE)
set(GLFW_PKGLIBS "${GLFW_PKGLIBS} xxf86vm")
- endif(_GLFW_HAS_XF86VIDMODE)
+ endif()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libglfw.pc.cmake
${CMAKE_CURRENT_BINARY_DIR}/libglfw.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libglfw.pc DESTINATION lib/pkgconfig)
-endif(UNIX)
+endif()
include_directories(${GLFW_SOURCE_DIR}/src
${GLFW_BINARY_DIR}/src
@@ -37,7 +37,7 @@ elseif(_GLFW_X11_GLX)
x11_window.c)
else()
message(FATAL_ERROR "No supported platform was selected")
-endif(_GLFW_COCOA_NSGL)
+endif()
add_library(libglfwStatic STATIC ${libglfw_SOURCES})
add_library(libglfwShared SHARED ${libglfw_SOURCES})
@@ -54,16 +54,16 @@ if(WIN32)
PREFIX ""
IMPORT_PREFIX ""
IMPORT_SUFFIX "dll.lib")
-endif(WIN32)
+endif()
if(APPLE)
# Append -fno-common to the compile flags to work around a bug in the Apple GCC
get_target_property(CFLAGS libglfwShared COMPILE_FLAGS)
- if(NOT CFLAGS)
+ if (NOT CFLAGS)
set(CFLAGS "")
- endif(NOT CFLAGS)
+ endif()
set_target_properties(libglfwShared PROPERTIES COMPILE_FLAGS "${CFLAGS} -fno-common")
-endif(APPLE)
+endif()
install(TARGETS libglfwStatic libglfwShared DESTINATION lib)
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index d7ac09542..586316034 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -61,9 +61,9 @@ set(WINDOWS_BINARIES accuracy sharing tearing title windows)
set(CONSOLE_BINARIES defaults events fsaa fsfocus gamma glfwinfo iconify
joysticks listmodes peter reopen)
-if(MSVC)
+if (MSVC)
# Tell MSVC to use main instead of WinMain for Windows subsystem executables
set_target_properties(${WINDOWS_BINARIES} ${CONSOLE_BINARIES} PROPERTIES
LINK_FLAGS "/ENTRY:mainCRTStartup")
-endif(MSVC)
+endif()
From 537754aab84f7edbca100c7c70682f0331c05a20 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Wed, 29 Feb 2012 20:17:09 +0100
Subject: [PATCH 07/62] Require CMake 2.8.
---
CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index a44543659..25f832791 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,6 @@
project(GLFW C)
-cmake_minimum_required(VERSION 2.4)
+cmake_minimum_required(VERSION 2.8)
cmake_policy(VERSION 2.4)
set(GLFW_VERSION_MAJOR "3")
From a27c444af41434eb270df8dd7a48954585aa4ec3 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Wed, 29 Feb 2012 20:19:05 +0100
Subject: [PATCH 08/62] Updated comment.
---
CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 25f832791..038705948 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -160,7 +160,7 @@ install(DIRECTORY include/GL DESTINATION include
install(FILES COPYING.txt readme.html
DESTINATION share/doc/glfw-${GLFW_VERSION_FULL}/)
-# The respective port's CMakeLists.txt file installs the library
+# The src directory's CMakeLists.txt file installs the library
#--------------------------------------------------------------------
# -- Documentation generation
From e7fb35a5d8075cd2d2cb28181213b75356d26769 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Thu, 1 Mar 2012 03:41:36 +0100
Subject: [PATCH 09/62] Removed legacy CMake policy.
---
CMakeLists.txt | 1 -
1 file changed, 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 038705948..f27cf7cdb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,7 +1,6 @@
project(GLFW C)
cmake_minimum_required(VERSION 2.8)
-cmake_policy(VERSION 2.4)
set(GLFW_VERSION_MAJOR "3")
set(GLFW_VERSION_MINOR "0")
From f49119107f6b214a179affc6aba798c2dca70eec Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Thu, 1 Mar 2012 03:45:06 +0100
Subject: [PATCH 10/62] Removed misplaced Win32 configuration macros.
---
src/config.h.in | 5 -----
1 file changed, 5 deletions(-)
diff --git a/src/config.h.in b/src/config.h.in
index f966356c4..46a6e2aa9 100644
--- a/src/config.h.in
+++ b/src/config.h.in
@@ -60,11 +60,6 @@
// Define this to 1 if the Linux joystick API is available
#cmakedefine _GLFW_USE_LINUX_JOYSTICKS 1
-// Define this to 1 to not load gdi32.dll dynamically
-#cmakedefine _GLFW_NO_DLOAD_GDI32 1
-// Define this to 1 to not load winmm.dll dynamically
-#cmakedefine _GLFW_NO_DLOAD_WINMM 1
-
// The GLFW version as used by glfwGetVersionString
#define _GLFW_VERSION_FULL "@GLFW_VERSION_FULL@"
From b5a3249f2e8a28d1a1324449e80f3b610cc7d40f Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Thu, 1 Mar 2012 03:51:35 +0100
Subject: [PATCH 11/62] Removed unused header.
---
include/GL/glfw3.h | 4 ----
1 file changed, 4 deletions(-)
diff --git a/include/GL/glfw3.h b/include/GL/glfw3.h
index e84bdbba2..cc817521e 100644
--- a/include/GL/glfw3.h
+++ b/include/GL/glfw3.h
@@ -136,10 +136,6 @@ extern "C" {
/* -------------------- END SYSTEM/COMPILER SPECIFIC --------------------- */
-/* Include the declaration of the size_t type used below.
- */
-#include
-
/* Include standard OpenGL headers: GLFW uses GL_FALSE/GL_TRUE, and it is
* convenient for the user to only have to include . This also
* solves the problem with Windows and needing some
From 6f3f68bad1c3aef37c7299cdcdb30b8b28e8e85c Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Thu, 1 Mar 2012 17:03:42 +0100
Subject: [PATCH 12/62] Gave CMake toolchain file clearer name.
---
CMake/{linux-mingw32msvc.cmake => linux-i586-mingw32msvc.cmake} | 0
1 file changed, 0 insertions(+), 0 deletions(-)
rename CMake/{linux-mingw32msvc.cmake => linux-i586-mingw32msvc.cmake} (100%)
diff --git a/CMake/linux-mingw32msvc.cmake b/CMake/linux-i586-mingw32msvc.cmake
similarity index 100%
rename from CMake/linux-mingw32msvc.cmake
rename to CMake/linux-i586-mingw32msvc.cmake
From 4ac5ea331bdd6e117e5ef36431f051058b30be1b Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Thu, 1 Mar 2012 17:15:37 +0100
Subject: [PATCH 13/62] Updated toolchain file README.
---
CMake/README.txt | 23 ++++++++++++++++-------
1 file changed, 16 insertions(+), 7 deletions(-)
diff --git a/CMake/README.txt b/CMake/README.txt
index d24854ed8..9581f832a 100644
--- a/CMake/README.txt
+++ b/CMake/README.txt
@@ -1,10 +1,19 @@
-This folder contains a collection of toolchains definition in order to
-support cross compilation. The naming scheme is the following:
+This directory contains a collection of toolchain definitions for cross
+compilation, currently limited to compiling Win32 binaries on Linux.
+
+The toolchain file naming scheme is as follows:
+
host-system-compiler.cmake
-to use this at the time you run the initial cmake command use the
-following parameter
- -DCMAKE_TOOLCHAIN_FILE=./toolchains/XXX-XXX-XXX.cmake
- which maps to file in this folder.
+To use these files you add a special parameter when configuring the source tree:
+
+ cmake -DCMAKE_TOOLCHAIN_FILE= .
+
+For example, to use the Debian GNU/Linux MinGW package, run CMake like this:
+
+ cmake -DCMAKE_TOOLCHAIN_FILE=CMake/linux-i586-mingw32msvc.cmake .
+
+For more details see this article:
+
+ http://www.paraview.org/Wiki/CMake_Cross_Compiling
-For more details see: http://www.paraview.org/Wiki/CMake_Cross_Compiling
From c0db61bd6e07e78ff9a47c8e9ebb26e5859da744 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Mon, 5 Mar 2012 16:26:15 +0100
Subject: [PATCH 14/62] Moved autorelease pool back to glfwInit.
---
src/cocoa_init.m | 2 ++
src/cocoa_window.m | 2 --
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/cocoa_init.m b/src/cocoa_init.m
index 16ea6e680..3251115f7 100644
--- a/src/cocoa_init.m
+++ b/src/cocoa_init.m
@@ -78,6 +78,8 @@ static void changeToResourcesDirectory(void)
int _glfwPlatformInit(void)
{
+ _glfwLibrary.NS.autoreleasePool = [[NSAutoreleasePool alloc] init];
+
_glfwLibrary.NS.OpenGLFramework =
CFBundleGetBundleWithIdentifier(CFSTR("com.apple.opengl"));
if (_glfwLibrary.NS.OpenGLFramework == NULL)
diff --git a/src/cocoa_window.m b/src/cocoa_window.m
index 578d1c41b..c74138b30 100644
--- a/src/cocoa_window.m
+++ b/src/cocoa_window.m
@@ -600,8 +600,6 @@ static GLboolean initializeAppKit(void)
if (NSApp)
return GL_TRUE;
- _glfwLibrary.NS.autoreleasePool = [[NSAutoreleasePool alloc] init];
-
// Implicitly create shared NSApplication instance
[GLFWApplication sharedApplication];
From 7af82fdade34454deaabe5aed09f04d766fe3a9d Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Mon, 5 Mar 2012 16:27:53 +0100
Subject: [PATCH 15/62] Replaced deprecated CoreGraphics calls in video mode
enumeration.
---
readme.html | 1 +
src/cocoa_fullscreen.m | 85 ++++++++++++++++++++++++++++--------------
src/cocoa_init.m | 9 ++++-
src/cocoa_platform.h | 9 +++--
4 files changed, 69 insertions(+), 35 deletions(-)
diff --git a/readme.html b/readme.html
index 5ab86c64c..12f726bf7 100644
--- a/readme.html
+++ b/readme.html
@@ -312,6 +312,7 @@ version of GLFW.
[Cocoa] Added support for joysticks
[Cocoa] Postponed menu creation to first window creation
[Cocoa] Replaced NSDate time source with mach_absolute_time
+ [Cocoa] Replaced deprecated CoreGraphics calls in video mode enumeration
[Cocoa] Bugfix: The loop condition for saving video modes used the wrong index variable
[Cocoa] Bugfix: The OpenGL framework was not retrieved, making glfwGetProcAddress crash
[Cocoa] Bugfix: glfwInit changed the current directory for unbundled executables
diff --git a/src/cocoa_fullscreen.m b/src/cocoa_fullscreen.m
index 370296b85..cc5df538e 100644
--- a/src/cocoa_fullscreen.m
+++ b/src/cocoa_fullscreen.m
@@ -34,38 +34,59 @@
// Check whether the display mode should be included in enumeration
//========================================================================
-static BOOL modeIsGood(NSDictionary* mode)
+static GLboolean modeIsGood(CGDisplayModeRef mode)
{
- // This is a bit controversial, if you've got something other than an
- // LCD computer monitor as an output device you might not want these
- // checks. You might also want to reject modes which are interlaced,
- // or TV out. There is no one-size-fits-all policy that can work here.
- // This seems like a decent compromise, but certain applications may
- // wish to patch this...
- return [[mode objectForKey:(id)kCGDisplayBitsPerPixel] intValue] >= 15 &&
- [mode objectForKey:(id)kCGDisplayModeIsSafeForHardware] != nil &&
- [mode objectForKey:(id)kCGDisplayModeIsStretched] == nil;
+ uint32_t flags = CGDisplayModeGetIOFlags(mode);
+ if (!(flags & kDisplayModeValidFlag) || !(flags & kDisplayModeSafeFlag))
+ return GL_FALSE;
+
+ if (flags & kDisplayModeInterlacedFlag)
+ return GL_FALSE;
+
+ if (flags & kDisplayModeTelevisionFlag)
+ return GL_FALSE;
+
+ if (flags & kDisplayModeStretchedFlag)
+ return GL_FALSE;
+
+ CFStringRef format = CGDisplayModeCopyPixelEncoding(mode);
+ if (CFStringCompare(format, CFSTR(IO16BitDirectPixels), 0) &&
+ CFStringCompare(format, CFSTR(IO32BitDirectPixels), 0))
+ {
+ CFRelease(format);
+ return GL_FALSE;
+ }
+
+ CFRelease(format);
+ return GL_TRUE;
}
//========================================================================
// Convert Core Graphics display mode to GLFW video mode
//========================================================================
-static GLFWvidmode vidmodeFromCGDisplayMode(NSDictionary* mode)
+static GLFWvidmode vidmodeFromCGDisplayMode(CGDisplayModeRef mode)
{
- unsigned int width =
- [[mode objectForKey:(id)kCGDisplayWidth] unsignedIntValue];
- unsigned int height =
- [[mode objectForKey:(id)kCGDisplayHeight] unsignedIntValue];
- unsigned int bps =
- [[mode objectForKey:(id)kCGDisplayBitsPerSample] unsignedIntValue];
-
GLFWvidmode result;
- result.width = width;
- result.height = height;
- result.redBits = bps;
- result.greenBits = bps;
- result.blueBits = bps;
+ result.width = CGDisplayModeGetWidth(mode);
+ result.height = CGDisplayModeGetHeight(mode);
+
+ CFStringRef format = CGDisplayModeCopyPixelEncoding(mode);
+
+ if (CFStringCompare(format, CFSTR(IO16BitDirectPixels), 0) == 0)
+ {
+ result.redBits = 5;
+ result.greenBits = 5;
+ result.blueBits = 5;
+ }
+ else
+ {
+ result.redBits = 8;
+ result.greenBits = 8;
+ result.blueBits = 8;
+ }
+
+ CFRelease(format);
return result;
}
@@ -80,17 +101,23 @@ static GLFWvidmode vidmodeFromCGDisplayMode(NSDictionary* mode)
int _glfwPlatformGetVideoModes(GLFWvidmode* list, int maxcount)
{
- NSArray* modes = (NSArray*) CGDisplayAvailableModes(CGMainDisplayID());
- unsigned int i, j = 0, n = [modes count];
+ CGDisplayModeRef mode;
+ CFArrayRef modes;
+ CFIndex count, i;
+ int stored = 0;
- for (i = 0; i < n && j < (unsigned)maxcount; i++)
+ modes = CGDisplayCopyAllDisplayModes(CGMainDisplayID(), NULL);
+ count = CFArrayGetCount(modes);
+
+ for (i = 0; i < count && stored < maxcount; i++)
{
- NSDictionary *mode = [modes objectAtIndex:i];
+ mode = (CGDisplayModeRef) CFArrayGetValueAtIndex(modes, i);
if (modeIsGood(mode))
- list[j++] = vidmodeFromCGDisplayMode(mode);
+ list[stored++] = vidmodeFromCGDisplayMode(mode);
}
- return j;
+ CFRelease(modes);
+ return stored;
}
//========================================================================
diff --git a/src/cocoa_init.m b/src/cocoa_init.m
index 3251115f7..067d4dde8 100644
--- a/src/cocoa_init.m
+++ b/src/cocoa_init.m
@@ -91,8 +91,7 @@ int _glfwPlatformInit(void)
changeToResourcesDirectory();
- _glfwLibrary.NS.desktopMode =
- (NSDictionary*) CGDisplayCurrentMode(CGMainDisplayID());
+ _glfwLibrary.NS.desktopMode = CGDisplayCopyDisplayMode(CGMainDisplayID());
// Save the original gamma ramp
_glfwLibrary.originalRampSize = CGDisplayGammaTableCapacity(CGMainDisplayID());
@@ -117,6 +116,12 @@ int _glfwPlatformTerminate(void)
// Restore the original gamma ramp
_glfwPlatformSetGammaRamp(&_glfwLibrary.originalRamp);
+ if (_glfwLibrary.NS.desktopMode)
+ {
+ CFRelease(_glfwLibrary.NS.desktopMode);
+ _glfwLibrary.NS.desktopMode = NULL;
+ }
+
[NSApp setDelegate:nil];
[_glfwLibrary.NS.delegate release];
_glfwLibrary.NS.delegate = nil;
diff --git a/src/cocoa_platform.h b/src/cocoa_platform.h
index 1a90af015..5a7537076 100644
--- a/src/cocoa_platform.h
+++ b/src/cocoa_platform.h
@@ -37,6 +37,7 @@
#if defined(__OBJC__)
#import
#else
+#include
typedef void* id;
#endif
@@ -90,10 +91,10 @@ typedef struct _GLFWlibraryNS
} timer;
// dlopen handle for dynamically loading OpenGL extension entry points
- void* OpenGLFramework;
- id desktopMode;
- id delegate;
- id autoreleasePool;
+ void* OpenGLFramework;
+ CGDisplayModeRef desktopMode;
+ id delegate;
+ id autoreleasePool;
} _GLFWlibraryNS;
From e55396d75432a3386af70c3737054f5ff3d7db01 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Mon, 5 Mar 2012 20:09:06 +0100
Subject: [PATCH 16/62] Shortened call to setAppleMenu:.
---
src/cocoa_window.m | 15 +++------------
1 file changed, 3 insertions(+), 12 deletions(-)
diff --git a/src/cocoa_window.m b/src/cocoa_window.m
index 239e883a0..defe8fce8 100644
--- a/src/cocoa_window.m
+++ b/src/cocoa_window.m
@@ -469,13 +469,6 @@ static int convertMacKeyCode(unsigned int macKeyCode)
@end
-// Prior to Snow Leopard, we need to use this oddly-named semi-private API
-// to get the application menu working properly. Need to be careful in
-// case it goes away in a future OS update.
-@interface NSApplication (NSAppleMenu)
-- (void)setAppleMenu:(NSMenu*)m;
-@end
-
//========================================================================
// Try to figure out what the calling application is called
//========================================================================
@@ -584,11 +577,9 @@ static void setUpMenuBar(void)
action:@selector(arrangeInFront:)
keyEquivalent:@""];
- // At least guard the call to private API to avoid an exception if it
- // goes away. Hopefully that means the worst we'll break in future is to
- // look ugly...
- if ([NSApp respondsToSelector:@selector(setAppleMenu:)])
- [NSApp setAppleMenu:appMenu];
+ // Prior to Snow Leopard, we need to use this oddly-named semi-private API
+ // to get the application menu working properly.
+ [NSApp performSelector:NSSelectorFromString(@"setAppleMenu:") withObject:appMenu];
}
From 4b21ccbe19706dc8bc59c80c814d298e8c56e49d Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Mon, 5 Mar 2012 20:22:23 +0100
Subject: [PATCH 17/62] Output fix.
---
tests/glfwinfo.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/glfwinfo.c b/tests/glfwinfo.c
index 369e6a964..45cb86161 100644
--- a/tests/glfwinfo.c
+++ b/tests/glfwinfo.c
@@ -263,7 +263,7 @@ int main(int argc, char** argv)
if (major > 3 || (major == 3 && minor >= 2))
{
glGetIntegerv(GL_CONTEXT_PROFILE_MASK, &mask);
- printf("OpenGL profile mask: 0x%08x (%s)\n", mask, get_profile_name(mask));
+ printf("OpenGL profile mask: %s (0x%08x)\n", get_profile_name(mask), mask);
printf("OpenGL profile parsed by GLFW: %s\n",
get_glfw_profile_name(glfwGetWindowParam(window, GLFW_OPENGL_PROFILE)));
From cb9bae5c71382a517e8a22a2773cb6521b6b1d6c Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Mon, 5 Mar 2012 20:27:47 +0100
Subject: [PATCH 18/62] Made glfwOpenWindow enforce the forward-compat and
profile hints.
---
readme.html | 1 +
src/cocoa_window.m | 15 ++++++++++++---
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/readme.html b/readme.html
index 5943be582..5762b0237 100644
--- a/readme.html
+++ b/readme.html
@@ -313,6 +313,7 @@ version of GLFW.
[Cocoa] Postponed menu creation to first window creation
[Cocoa] Replaced NSDate time source with mach_absolute_time
[Cocoa] Replaced deprecated CoreGraphics calls in video mode enumeration
+ [Cocoa] Bugfix: glfwOpenWindow did not properly enforce the forward-compatible and context profile hints
[Cocoa] Bugfix: The loop condition for saving video modes used the wrong index variable
[Cocoa] Bugfix: The OpenGL framework was not retrieved, making glfwGetProcAddress crash
[Cocoa] Bugfix: glfwInit changed the current directory for unbundled executables
diff --git a/src/cocoa_window.m b/src/cocoa_window.m
index defe8fce8..46532778d 100644
--- a/src/cocoa_window.m
+++ b/src/cocoa_window.m
@@ -675,14 +675,23 @@ static GLboolean createContext(_GLFWwindow* window,
return GL_FALSE;
}
- if (wndconfig->glProfile)
+ if (wndconfig->glMajor > 2)
{
- // Fail if a profile other than core was explicitly selected
+ if (!wndconfig->glForward)
+ {
+ _glfwSetError(GLFW_VERSION_UNAVAILABLE,
+ "Cocoa/NSOpenGL: The targeted version of Mac OS X "
+ "only supports OpenGL 3.2 contexts if they are "
+ "forward-compatible");
+ return GL_FALSE;
+ }
+
if (wndconfig->glProfile != GLFW_OPENGL_CORE_PROFILE)
{
_glfwSetError(GLFW_VERSION_UNAVAILABLE,
"Cocoa/NSOpenGL: The targeted version of Mac OS X "
- "only supports the OpenGL core profile");
+ "only supports OpenGL 3.2 contexts if they use the "
+ "core profile");
return GL_FALSE;
}
}
From 3383e59a73b18eb3a49288339ed06b7c677278db Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Mon, 5 Mar 2012 20:30:59 +0100
Subject: [PATCH 19/62] Renamed function.
---
src/cocoa_window.m | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/cocoa_window.m b/src/cocoa_window.m
index 46532778d..2907e9416 100644
--- a/src/cocoa_window.m
+++ b/src/cocoa_window.m
@@ -523,7 +523,7 @@ static NSString* findAppName(void)
// localize(d|able), etc. Loading a nib would save us this horror, but that
// doesn't seem like a good thing to require of GLFW's clients.
//========================================================================
-static void setUpMenuBar(void)
+static void createMenuBar(void)
{
NSString* appName = findAppName();
@@ -597,7 +597,7 @@ static GLboolean initializeAppKit(void)
// Setting up the menu bar must go between sharedApplication
// above and finishLaunching below, in order to properly emulate the
// behavior of NSApplicationMain
- setUpMenuBar();
+ createMenuBar();
[NSApp finishLaunching];
From a90675c526445495fd6e1fc0d8b4a94338f82a4a Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Mon, 5 Mar 2012 22:05:40 +0100
Subject: [PATCH 20/62] Shortened the shortening.
---
src/cocoa_window.m | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/cocoa_window.m b/src/cocoa_window.m
index 2907e9416..94a11118b 100644
--- a/src/cocoa_window.m
+++ b/src/cocoa_window.m
@@ -579,7 +579,7 @@ static void createMenuBar(void)
// Prior to Snow Leopard, we need to use this oddly-named semi-private API
// to get the application menu working properly.
- [NSApp performSelector:NSSelectorFromString(@"setAppleMenu:") withObject:appMenu];
+ [NSApp performSelector:@selector(setAppleMenu:) withObject:appMenu];
}
From adf4899f4c94cba654f777632c245d7382c11de4 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Mon, 5 Mar 2012 22:37:48 +0100
Subject: [PATCH 21/62] Added name and version to test and example bundles.
---
examples/CMakeLists.txt | 18 ++++++++++++++++--
tests/CMakeLists.txt | 11 +++++++++++
2 files changed, 27 insertions(+), 2 deletions(-)
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 37b7f754e..39cad9434 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -14,6 +14,12 @@ if (APPLE)
add_executable("Split View" MACOSX_BUNDLE splitview.c)
add_executable(Triangle MACOSX_BUNDLE triangle.c)
add_executable(Wave MACOSX_BUNDLE wave.c)
+
+ set_target_properties(Boing PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Boing")
+ set_target_properties(Gears PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Gears")
+ set_target_properties("Split View" PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Split View")
+ set_target_properties(Triangle PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Triangle")
+ set_target_properties(Wave PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Wave")
else()
# Set boring names for executables
add_executable(boing WIN32 boing.c)
@@ -24,11 +30,19 @@ else()
add_executable(wave WIN32 wave.c)
endif()
-set(WINDOWS_BINARIES boing gears heightmap splitview triangle wave)
-
if (MSVC)
+ set(WINDOWS_BINARIES boing gears heightmap splitview triangle wave)
+
# Tell MSVC to use main instead of WinMain for Windows subsystem executables
set_target_properties(${WINDOWS_BINARIES} PROPERTIES
LINK_FLAGS "/ENTRY:mainCRTStartup")
endif()
+if (APPLE)
+ set(BUNDLE_BINARIES Boing Gears "Split View" Triangle Wave)
+
+ set_target_properties(${BUNDLE_BINARIES} PROPERTIES
+ MACOSX_BUNDLE_SHORT_VERSION_STRING ${GLFW_VERSION}
+ MACOSX_BUNDLE_LONG_VERSION_STRING ${GLFW_VERSION_FULL})
+endif()
+
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 586316034..44a79972d 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -44,18 +44,23 @@ target_link_libraries(reopen ${STATIC_DEPS})
add_executable(accuracy WIN32 MACOSX_BUNDLE accuracy.c)
target_link_libraries(accuracy ${STATIC_DEPS})
+set_target_properties(accuracy PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Accuracy")
add_executable(sharing WIN32 MACOSX_BUNDLE sharing.c)
target_link_libraries(sharing ${STATIC_DEPS})
+set_target_properties(sharing PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Sharing")
add_executable(tearing WIN32 MACOSX_BUNDLE tearing.c)
target_link_libraries(tearing ${STATIC_DEPS})
+set_target_properties(tearing PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Tearing")
add_executable(title WIN32 MACOSX_BUNDLE title.c)
target_link_libraries(title ${STATIC_DEPS})
+set_target_properties(title PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Title")
add_executable(windows WIN32 MACOSX_BUNDLE windows.c)
target_link_libraries(windows ${STATIC_DEPS})
+set_target_properties(windows PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Windows")
set(WINDOWS_BINARIES accuracy sharing tearing title windows)
set(CONSOLE_BINARIES defaults events fsaa fsfocus gamma glfwinfo iconify
@@ -67,3 +72,9 @@ if (MSVC)
LINK_FLAGS "/ENTRY:mainCRTStartup")
endif()
+if (APPLE)
+ set_target_properties(${WINDOWS_BINARIES} ${CONSOLE_BINARIES} PROPERTIES
+ MACOSX_BUNDLE_SHORT_VERSION_STRING ${GLFW_VERSION}
+ MACOSX_BUNDLE_LONG_VERSION_STRING ${GLFW_VERSION_FULL})
+endif()
+
From c286c716cde8681e0c503024c95f10f05fbac59e Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Mon, 5 Mar 2012 23:41:05 +0100
Subject: [PATCH 22/62] Formatting.
---
examples/CMakeLists.txt | 52 ++++++++++++++++++++---------------------
tests/CMakeLists.txt | 12 +++++-----
2 files changed, 32 insertions(+), 32 deletions(-)
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 39cad9434..a644b9870 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -8,41 +8,41 @@ include_directories(${GLFW_SOURCE_DIR}/include
${OPENGL_INCLUDE_DIR})
if (APPLE)
- # Set fancy names for bundles
- add_executable(Boing MACOSX_BUNDLE boing.c)
- add_executable(Gears MACOSX_BUNDLE gears.c)
- add_executable("Split View" MACOSX_BUNDLE splitview.c)
- add_executable(Triangle MACOSX_BUNDLE triangle.c)
- add_executable(Wave MACOSX_BUNDLE wave.c)
+ # Set fancy names for bundles
+ add_executable(Boing MACOSX_BUNDLE boing.c)
+ add_executable(Gears MACOSX_BUNDLE gears.c)
+ add_executable("Split View" MACOSX_BUNDLE splitview.c)
+ add_executable(Triangle MACOSX_BUNDLE triangle.c)
+ add_executable(Wave MACOSX_BUNDLE wave.c)
- set_target_properties(Boing PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Boing")
- set_target_properties(Gears PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Gears")
- set_target_properties("Split View" PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Split View")
- set_target_properties(Triangle PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Triangle")
- set_target_properties(Wave PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Wave")
+ set_target_properties(Boing PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Boing")
+ set_target_properties(Gears PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Gears")
+ set_target_properties("Split View" PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Split View")
+ set_target_properties(Triangle PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Triangle")
+ set_target_properties(Wave PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Wave")
else()
- # Set boring names for executables
- add_executable(boing WIN32 boing.c)
- add_executable(gears WIN32 gears.c)
- add_executable(heightmap WIN32 heightmap.c getopt.c)
- add_executable(splitview WIN32 splitview.c)
- add_executable(triangle WIN32 triangle.c)
- add_executable(wave WIN32 wave.c)
+ # Set boring names for executables
+ add_executable(boing WIN32 boing.c)
+ add_executable(gears WIN32 gears.c)
+ add_executable(heightmap WIN32 heightmap.c getopt.c)
+ add_executable(splitview WIN32 splitview.c)
+ add_executable(triangle WIN32 triangle.c)
+ add_executable(wave WIN32 wave.c)
endif()
if (MSVC)
- set(WINDOWS_BINARIES boing gears heightmap splitview triangle wave)
+ set(WINDOWS_BINARIES boing gears heightmap splitview triangle wave)
- # Tell MSVC to use main instead of WinMain for Windows subsystem executables
- set_target_properties(${WINDOWS_BINARIES} PROPERTIES
- LINK_FLAGS "/ENTRY:mainCRTStartup")
+ # Tell MSVC to use main instead of WinMain for Windows subsystem executables
+ set_target_properties(${WINDOWS_BINARIES} PROPERTIES
+ LINK_FLAGS "/ENTRY:mainCRTStartup")
endif()
if (APPLE)
- set(BUNDLE_BINARIES Boing Gears "Split View" Triangle Wave)
+ set(BUNDLE_BINARIES Boing Gears "Split View" Triangle Wave)
- set_target_properties(${BUNDLE_BINARIES} PROPERTIES
- MACOSX_BUNDLE_SHORT_VERSION_STRING ${GLFW_VERSION}
- MACOSX_BUNDLE_LONG_VERSION_STRING ${GLFW_VERSION_FULL})
+ set_target_properties(${BUNDLE_BINARIES} PROPERTIES
+ MACOSX_BUNDLE_SHORT_VERSION_STRING ${GLFW_VERSION}
+ MACOSX_BUNDLE_LONG_VERSION_STRING ${GLFW_VERSION_FULL})
endif()
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 44a79972d..663f9a119 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -67,14 +67,14 @@ set(CONSOLE_BINARIES defaults events fsaa fsfocus gamma glfwinfo iconify
joysticks listmodes peter reopen)
if (MSVC)
- # Tell MSVC to use main instead of WinMain for Windows subsystem executables
- set_target_properties(${WINDOWS_BINARIES} ${CONSOLE_BINARIES} PROPERTIES
- LINK_FLAGS "/ENTRY:mainCRTStartup")
+ # Tell MSVC to use main instead of WinMain for Windows subsystem executables
+ set_target_properties(${WINDOWS_BINARIES} ${CONSOLE_BINARIES} PROPERTIES
+ LINK_FLAGS "/ENTRY:mainCRTStartup")
endif()
if (APPLE)
- set_target_properties(${WINDOWS_BINARIES} ${CONSOLE_BINARIES} PROPERTIES
- MACOSX_BUNDLE_SHORT_VERSION_STRING ${GLFW_VERSION}
- MACOSX_BUNDLE_LONG_VERSION_STRING ${GLFW_VERSION_FULL})
+ set_target_properties(${WINDOWS_BINARIES} ${CONSOLE_BINARIES} PROPERTIES
+ MACOSX_BUNDLE_SHORT_VERSION_STRING ${GLFW_VERSION}
+ MACOSX_BUNDLE_LONG_VERSION_STRING ${GLFW_VERSION_FULL})
endif()
From 5f854b2bbf2ea9b6129a990271119f462ef4520e Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Tue, 6 Mar 2012 00:58:04 +0100
Subject: [PATCH 23/62] Replaced CFRelease with CGDisplayModeRelease.
---
src/cocoa_init.m | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/src/cocoa_init.m b/src/cocoa_init.m
index 067d4dde8..89260c56d 100644
--- a/src/cocoa_init.m
+++ b/src/cocoa_init.m
@@ -116,11 +116,7 @@ int _glfwPlatformTerminate(void)
// Restore the original gamma ramp
_glfwPlatformSetGammaRamp(&_glfwLibrary.originalRamp);
- if (_glfwLibrary.NS.desktopMode)
- {
- CFRelease(_glfwLibrary.NS.desktopMode);
- _glfwLibrary.NS.desktopMode = NULL;
- }
+ CGDisplayModeRelease(_glfwLibrary.NS.desktopMode);
[NSApp setDelegate:nil];
[_glfwLibrary.NS.delegate release];
From be547da9d2ead0ee17371111a06b85d088ba47a8 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Tue, 6 Mar 2012 02:21:01 +0100
Subject: [PATCH 24/62] Replaced more deprecated CoreGraphics calls.
---
readme.html | 2 +-
src/cocoa_fullscreen.m | 97 ++++++++++++++++++++++++++++++++++++++++++
src/cocoa_platform.h | 3 ++
src/cocoa_window.m | 37 +++++-----------
4 files changed, 111 insertions(+), 28 deletions(-)
diff --git a/readme.html b/readme.html
index 5762b0237..5f3af632e 100644
--- a/readme.html
+++ b/readme.html
@@ -312,7 +312,7 @@ version of GLFW.
[Cocoa] Added support for joysticks
[Cocoa] Postponed menu creation to first window creation
[Cocoa] Replaced NSDate time source with mach_absolute_time
- [Cocoa] Replaced deprecated CoreGraphics calls in video mode enumeration
+ [Cocoa] Replaced deprecated CoreGraphics calls in video mode enumeration and setting
[Cocoa] Bugfix: glfwOpenWindow did not properly enforce the forward-compatible and context profile hints
[Cocoa] Bugfix: The loop condition for saving video modes used the wrong index variable
[Cocoa] Bugfix: The OpenGL framework was not retrieved, making glfwGetProcAddress crash
diff --git a/src/cocoa_fullscreen.m b/src/cocoa_fullscreen.m
index cc5df538e..d3a715ba5 100644
--- a/src/cocoa_fullscreen.m
+++ b/src/cocoa_fullscreen.m
@@ -29,6 +29,9 @@
#include "internal.h"
+#include
+#include
+
//========================================================================
// Check whether the display mode should be included in enumeration
@@ -91,6 +94,100 @@ static GLFWvidmode vidmodeFromCGDisplayMode(CGDisplayModeRef mode)
}
+//////////////////////////////////////////////////////////////////////////
+////// GLFW internal API //////
+//////////////////////////////////////////////////////////////////////////
+
+//========================================================================
+// Change the current video mode
+//========================================================================
+
+GLboolean _glfwSetVideoMode(int* width, int* height, int* bpp, int* refreshRate)
+{
+ CGDisplayModeRef bestMode = NULL;
+ CFArrayRef modes;
+ CFIndex count, i;
+ unsigned int leastSizeDiff = UINT_MAX;
+ double leastRateDiff = DBL_MAX;
+
+ modes = CGDisplayCopyAllDisplayModes(CGMainDisplayID(), NULL);
+ count = CFArrayGetCount(modes);
+
+ for (i = 0; i < count; i++)
+ {
+ CGDisplayModeRef mode = (CGDisplayModeRef) CFArrayGetValueAtIndex(modes, i);
+ if (!modeIsGood(mode))
+ continue;
+
+ int modeBPP;
+
+ // Identify display mode pixel encoding
+ {
+ CFStringRef format = CGDisplayModeCopyPixelEncoding(mode);
+
+ if (CFStringCompare(format, CFSTR(IO16BitDirectPixels), 0) == 0)
+ modeBPP = 16;
+ else
+ modeBPP = 32;
+
+ CFRelease(format);
+ }
+
+ int modeWidth = (int) CGDisplayModeGetWidth(mode);
+ int modeHeight = (int) CGDisplayModeGetHeight(mode);
+
+ unsigned int sizeDiff = (abs(modeBPP - *bpp) << 25) |
+ ((modeWidth - *width) * (modeWidth - *width) +
+ (modeHeight - *height) * (modeHeight - *height));
+
+ double rateDiff;
+
+ if (*refreshRate > 0)
+ rateDiff = fabs(CGDisplayModeGetRefreshRate(mode) - *refreshRate);
+ else
+ {
+ // If no refresh rate was specified, then they're all the same
+ rateDiff = 0;
+ }
+
+ if ((sizeDiff < leastSizeDiff) ||
+ (sizeDiff == leastSizeDiff && (rateDiff < leastRateDiff)))
+ {
+ bestMode = mode;
+
+ leastSizeDiff = sizeDiff;
+ leastRateDiff = rateDiff;
+ }
+ }
+
+ if (!bestMode)
+ {
+ CFRelease(modes);
+ return GL_FALSE;
+ }
+
+ CGDisplayCapture(CGMainDisplayID());
+ CGDisplaySetDisplayMode(CGMainDisplayID(), bestMode, NULL);
+
+ CFRelease(modes);
+ return GL_TRUE;
+}
+
+
+//========================================================================
+// Restore the previously saved (original) video mode
+//========================================================================
+
+void _glfwRestoreVideoMode(void)
+{
+ CGDisplaySetDisplayMode(CGMainDisplayID(),
+ _glfwLibrary.NS.desktopMode,
+ NULL);
+
+ CGDisplayRelease(CGMainDisplayID());
+}
+
+
//////////////////////////////////////////////////////////////////////////
////// GLFW platform API //////
//////////////////////////////////////////////////////////////////////////
diff --git a/src/cocoa_platform.h b/src/cocoa_platform.h
index 5a7537076..a06c13a0f 100644
--- a/src/cocoa_platform.h
+++ b/src/cocoa_platform.h
@@ -109,5 +109,8 @@ void _glfwInitTimer(void);
void _glfwInitJoysticks(void);
void _glfwTerminateJoysticks(void);
+// Fullscreen
+GLboolean _glfwSetVideoMode(int* width, int* height, int* bpp, int* refreshRate);
+void _glfwRestoreVideoMode(void);
#endif // _platform_h_
diff --git a/src/cocoa_window.m b/src/cocoa_window.m
index 94a11118b..c1d710c08 100644
--- a/src/cocoa_window.m
+++ b/src/cocoa_window.m
@@ -850,28 +850,6 @@ int _glfwPlatformOpenWindow(_GLFWwindow* window,
// Don't use accumulation buffer support; it's not accelerated
// Aux buffers probably aren't accelerated either
- CFDictionaryRef fullscreenMode = NULL;
- if (wndconfig->mode == GLFW_FULLSCREEN)
- {
- // I think it's safe to pass 0 to the refresh rate for this function
- // rather than conditionalizing the code to call the version which
- // doesn't specify refresh...
- fullscreenMode =
- CGDisplayBestModeForParametersAndRefreshRateWithProperty(
- CGMainDisplayID(),
- colorBits + fbconfig->alphaBits,
- window->width, window->height,
- wndconfig->refreshRate,
- // Controversial, see macosx_fullscreen.m for discussion
- kCGDisplayModeIsSafeForHardware,
- NULL);
-
- window->width =
- [[(id)fullscreenMode objectForKey:(id)kCGDisplayWidth] intValue];
- window->height =
- [[(id)fullscreenMode objectForKey:(id)kCGDisplayHeight] intValue];
- }
-
if (!createWindow(window, wndconfig))
return GL_FALSE;
@@ -883,8 +861,15 @@ int _glfwPlatformOpenWindow(_GLFWwindow* window,
if (wndconfig->mode == GLFW_FULLSCREEN)
{
- CGCaptureAllDisplays();
- CGDisplaySwitchToMode(CGMainDisplayID(), fullscreenMode);
+ int bpp = colorBits + fbconfig->alphaBits;
+
+ if (!_glfwSetVideoMode(&window->width,
+ &window->height,
+ &bpp,
+ &window->refreshRate))
+ {
+ return GL_FALSE;
+ }
[[window->NS.window contentView] enterFullScreenMode:[NSScreen mainScreen]
withOptions:nil];
@@ -914,9 +899,7 @@ void _glfwPlatformCloseWindow(_GLFWwindow* window)
{
[[window->NS.window contentView] exitFullScreenModeWithOptions:nil];
- CGDisplaySwitchToMode(CGMainDisplayID(),
- (CFDictionaryRef) _glfwLibrary.NS.desktopMode);
- CGReleaseAllDisplays();
+ _glfwRestoreVideoMode();
}
[window->NSGL.pixelFormat release];
From 8155f90bf33c07724d9f6e7e69fcddebc6fde0c4 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Wed, 7 Mar 2012 15:04:14 +0100
Subject: [PATCH 25/62] Formatting.
---
src/cocoa_fullscreen.m | 2 ++
src/cocoa_init.m | 2 ++
src/cocoa_joystick.m | 1 -
src/cocoa_opengl.m | 4 ++++
src/cocoa_time.c | 1 +
src/cocoa_window.m | 20 ++++++++++++++++++++
6 files changed, 29 insertions(+), 1 deletion(-)
diff --git a/src/cocoa_fullscreen.m b/src/cocoa_fullscreen.m
index d3a715ba5..147913fbe 100644
--- a/src/cocoa_fullscreen.m
+++ b/src/cocoa_fullscreen.m
@@ -64,6 +64,7 @@ static GLboolean modeIsGood(CGDisplayModeRef mode)
return GL_TRUE;
}
+
//========================================================================
// Convert Core Graphics display mode to GLFW video mode
//========================================================================
@@ -217,6 +218,7 @@ int _glfwPlatformGetVideoModes(GLFWvidmode* list, int maxcount)
return stored;
}
+
//========================================================================
// Get the desktop video mode
//========================================================================
diff --git a/src/cocoa_init.m b/src/cocoa_init.m
index 89260c56d..d9530f62d 100644
--- a/src/cocoa_init.m
+++ b/src/cocoa_init.m
@@ -33,6 +33,7 @@
//========================================================================
// Change to our application bundle's resources directory, if present
//========================================================================
+
static void changeToResourcesDirectory(void)
{
char resourcesPath[MAXPATHLEN];
@@ -105,6 +106,7 @@ int _glfwPlatformInit(void)
return GL_TRUE;
}
+
//========================================================================
// Close window, if open, and shut down GLFW
//========================================================================
diff --git a/src/cocoa_joystick.m b/src/cocoa_joystick.m
index a167692f5..45b3be0fa 100644
--- a/src/cocoa_joystick.m
+++ b/src/cocoa_joystick.m
@@ -579,4 +579,3 @@ int _glfwPlatformGetJoystickButtons(int joy, unsigned char* buttons,
return numbuttons;
}
-
diff --git a/src/cocoa_opengl.m b/src/cocoa_opengl.m
index bd3827fcb..0ea39076b 100644
--- a/src/cocoa_opengl.m
+++ b/src/cocoa_opengl.m
@@ -59,6 +59,7 @@ void _glfwPlatformSwapBuffers(void)
[window->NSGL.context flushBuffer];
}
+
//========================================================================
// Set double buffering swap interval
//========================================================================
@@ -71,6 +72,7 @@ void _glfwPlatformSwapInterval(int interval)
[window->NSGL.context setValues:&sync forParameter:NSOpenGLCPSwapInterval];
}
+
//========================================================================
// Check if an OpenGL extension is available at runtime
//========================================================================
@@ -81,6 +83,7 @@ int _glfwPlatformExtensionSupported(const char* extension)
return GL_FALSE;
}
+
//========================================================================
// Get the function pointer to an OpenGL function
//========================================================================
@@ -99,6 +102,7 @@ void* _glfwPlatformGetProcAddress(const char* procname)
return symbol;
}
+
//========================================================================
// Copies the specified OpenGL state categories from src to dst
//========================================================================
diff --git a/src/cocoa_time.c b/src/cocoa_time.c
index 4facbffb9..745b42396 100644
--- a/src/cocoa_time.c
+++ b/src/cocoa_time.c
@@ -74,6 +74,7 @@ double _glfwPlatformGetTime(void)
_glfwLibrary.NS.timer.resolution;
}
+
//========================================================================
// Set timer value in seconds
//========================================================================
diff --git a/src/cocoa_window.m b/src/cocoa_window.m
index c1d710c08..d2bcbb3d5 100644
--- a/src/cocoa_window.m
+++ b/src/cocoa_window.m
@@ -112,6 +112,7 @@
@end
+
//========================================================================
// Delegate for application related notifications
//========================================================================
@@ -133,6 +134,7 @@
@end
+
//========================================================================
// Keyboard symbol translation table
//========================================================================
@@ -270,6 +272,7 @@ static const unsigned int MAC_TO_GLFW_KEYCODE_MAPPING[128] =
/* 7f */ -1,
};
+
//========================================================================
// Converts a Mac OS X keycode to a GLFW keycode
//========================================================================
@@ -285,6 +288,7 @@ static int convertMacKeyCode(unsigned int macKeyCode)
return MAC_TO_GLFW_KEYCODE_MAPPING[macKeyCode];
}
+
//========================================================================
// Content view class for the GLFW window
//========================================================================
@@ -446,6 +450,7 @@ static int convertMacKeyCode(unsigned int macKeyCode)
@end
+
//========================================================================
// GLFW application class
//========================================================================
@@ -516,6 +521,7 @@ static NSString* findAppName(void)
return @"GLFW Application";
}
+
//========================================================================
// Set up the menu bar (manually)
// This is nasty, nasty stuff -- calls to undocumented semi-private APIs that
@@ -523,6 +529,7 @@ static NSString* findAppName(void)
// localize(d|able), etc. Loading a nib would save us this horror, but that
// doesn't seem like a good thing to require of GLFW's clients.
//========================================================================
+
static void createMenuBar(void)
{
NSString* appName = findAppName();
@@ -586,6 +593,7 @@ static void createMenuBar(void)
//========================================================================
// Initialize the Cocoa Application Kit
//========================================================================
+
static GLboolean initializeAppKit(void)
{
if (NSApp)
@@ -604,6 +612,7 @@ static GLboolean initializeAppKit(void)
return GL_TRUE;
}
+
//========================================================================
// Create the Cocoa window
//========================================================================
@@ -647,6 +656,7 @@ static GLboolean createWindow(_GLFWwindow* window,
return GL_TRUE;
}
+
//========================================================================
// Create the OpenGL context
//========================================================================
@@ -919,6 +929,7 @@ void _glfwPlatformCloseWindow(_GLFWwindow* window)
// TODO: Probably more cleanup
}
+
//========================================================================
// Set the window title
//========================================================================
@@ -928,6 +939,7 @@ void _glfwPlatformSetWindowTitle(_GLFWwindow* window, const char *title)
[window->NS.window setTitle:[NSString stringWithUTF8String:title]];
}
+
//========================================================================
// Set the window size
//========================================================================
@@ -937,6 +949,7 @@ void _glfwPlatformSetWindowSize(_GLFWwindow* window, int width, int height)
[window->NS.window setContentSize:NSMakeSize(width, height)];
}
+
//========================================================================
// Set the window position
//========================================================================
@@ -957,6 +970,7 @@ void _glfwPlatformSetWindowPos(_GLFWwindow* window, int x, int y)
display:YES];
}
+
//========================================================================
// Iconify the window
//========================================================================
@@ -966,6 +980,7 @@ void _glfwPlatformIconifyWindow(_GLFWwindow* window)
[window->NS.window miniaturize:nil];
}
+
//========================================================================
// Restore (un-iconify) the window
//========================================================================
@@ -975,6 +990,7 @@ void _glfwPlatformRestoreWindow(_GLFWwindow* window)
[window->NS.window deminiaturize:nil];
}
+
//========================================================================
// Write back window parameters into GLFW window structure
//========================================================================
@@ -1049,6 +1065,7 @@ void _glfwPlatformRefreshWindowParams(void)
window->glDebug = GL_FALSE;
}
+
//========================================================================
// Poll for new window and input events
//========================================================================
@@ -1073,6 +1090,7 @@ void _glfwPlatformPollEvents(void)
_glfwLibrary.NS.autoreleasePool = [[NSAutoreleasePool alloc] init];
}
+
//========================================================================
// Wait for new window and input events
//========================================================================
@@ -1091,6 +1109,7 @@ void _glfwPlatformWaitEvents( void )
_glfwPlatformPollEvents();
}
+
//========================================================================
// Set physical mouse cursor position
//========================================================================
@@ -1123,6 +1142,7 @@ void _glfwPlatformSetMouseCursorPos(_GLFWwindow* window, int x, int y)
CGDisplayMoveCursorToPoint(CGMainDisplayID(), targetPoint);
}
+
//========================================================================
// Set physical mouse cursor mode
//========================================================================
From 89eec8af09c82a9193cc7c7ae6d5436375f91fa8 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Wed, 7 Mar 2012 15:10:53 +0100
Subject: [PATCH 26/62] Made more consistent use of key code conversion.
---
src/cocoa_window.m | 19 +++++++++++--------
1 file changed, 11 insertions(+), 8 deletions(-)
diff --git a/src/cocoa_window.m b/src/cocoa_window.m
index d2bcbb3d5..411e600d0 100644
--- a/src/cocoa_window.m
+++ b/src/cocoa_window.m
@@ -392,11 +392,11 @@ static int convertMacKeyCode(unsigned int macKeyCode)
{
NSUInteger i, length;
NSString* characters;
- int code = convertMacKeyCode([event keyCode]);
+ int key = convertMacKeyCode([event keyCode]);
- if (code != -1)
+ if (key != -1)
{
- _glfwInputKey(window, code, GLFW_PRESS);
+ _glfwInputKey(window, key, GLFW_PRESS);
if ([event modifierFlags] & NSCommandKeyMask)
{
@@ -416,7 +416,7 @@ static int convertMacKeyCode(unsigned int macKeyCode)
- (void)flagsChanged:(NSEvent *)event
{
- int mode;
+ int mode, key;
unsigned int newModifierFlags =
[event modifierFlags] | NSDeviceIndependentModifierFlagsMask;
@@ -426,14 +426,17 @@ static int convertMacKeyCode(unsigned int macKeyCode)
mode = GLFW_RELEASE;
window->NS.modifierFlags = newModifierFlags;
- _glfwInputKey(window, MAC_TO_GLFW_KEYCODE_MAPPING[[event keyCode]], mode);
+
+ key = convertMacKeyCode([event keyCode]);
+ if (key != -1)
+ _glfwInputKey(window, key, mode);
}
- (void)keyUp:(NSEvent *)event
{
- int code = convertMacKeyCode([event keyCode]);
- if (code != -1)
- _glfwInputKey(window, code, GLFW_RELEASE);
+ int key = convertMacKeyCode([event keyCode]);
+ if (key != -1)
+ _glfwInputKey(window, key, GLFW_RELEASE);
}
- (void)scrollWheel:(NSEvent *)event
From 339fb7d246af11248d42d5d2131f85dba8e0dc56 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Wed, 7 Mar 2012 15:13:41 +0100
Subject: [PATCH 27/62] Made key code translation table private to function.
---
src/cocoa_window.m | 274 ++++++++++++++++++++++-----------------------
1 file changed, 135 insertions(+), 139 deletions(-)
diff --git a/src/cocoa_window.m b/src/cocoa_window.m
index 411e600d0..b8ccdea6e 100644
--- a/src/cocoa_window.m
+++ b/src/cocoa_window.m
@@ -135,157 +135,153 @@
@end
-//========================================================================
-// Keyboard symbol translation table
-//========================================================================
-
-// TODO: Need to find mappings for F13-F15, volume down/up/mute, and eject.
-static const unsigned int MAC_TO_GLFW_KEYCODE_MAPPING[128] =
-{
- /* 00 */ GLFW_KEY_A,
- /* 01 */ GLFW_KEY_S,
- /* 02 */ GLFW_KEY_D,
- /* 03 */ GLFW_KEY_F,
- /* 04 */ GLFW_KEY_H,
- /* 05 */ GLFW_KEY_G,
- /* 06 */ GLFW_KEY_Z,
- /* 07 */ GLFW_KEY_X,
- /* 08 */ GLFW_KEY_C,
- /* 09 */ GLFW_KEY_V,
- /* 0a */ GLFW_KEY_GRAVE_ACCENT,
- /* 0b */ GLFW_KEY_B,
- /* 0c */ GLFW_KEY_Q,
- /* 0d */ GLFW_KEY_W,
- /* 0e */ GLFW_KEY_E,
- /* 0f */ GLFW_KEY_R,
- /* 10 */ GLFW_KEY_Y,
- /* 11 */ GLFW_KEY_T,
- /* 12 */ GLFW_KEY_1,
- /* 13 */ GLFW_KEY_2,
- /* 14 */ GLFW_KEY_3,
- /* 15 */ GLFW_KEY_4,
- /* 16 */ GLFW_KEY_6,
- /* 17 */ GLFW_KEY_5,
- /* 18 */ GLFW_KEY_EQUAL,
- /* 19 */ GLFW_KEY_9,
- /* 1a */ GLFW_KEY_7,
- /* 1b */ GLFW_KEY_MINUS,
- /* 1c */ GLFW_KEY_8,
- /* 1d */ GLFW_KEY_0,
- /* 1e */ GLFW_KEY_RIGHT_BRACKET,
- /* 1f */ GLFW_KEY_O,
- /* 20 */ GLFW_KEY_U,
- /* 21 */ GLFW_KEY_LEFT_BRACKET,
- /* 22 */ GLFW_KEY_I,
- /* 23 */ GLFW_KEY_P,
- /* 24 */ GLFW_KEY_ENTER,
- /* 25 */ GLFW_KEY_L,
- /* 26 */ GLFW_KEY_J,
- /* 27 */ GLFW_KEY_APOSTROPHE,
- /* 28 */ GLFW_KEY_K,
- /* 29 */ GLFW_KEY_SEMICOLON,
- /* 2a */ GLFW_KEY_BACKSLASH,
- /* 2b */ GLFW_KEY_COMMA,
- /* 2c */ GLFW_KEY_SLASH,
- /* 2d */ GLFW_KEY_N,
- /* 2e */ GLFW_KEY_M,
- /* 2f */ GLFW_KEY_PERIOD,
- /* 30 */ GLFW_KEY_TAB,
- /* 31 */ GLFW_KEY_SPACE,
- /* 32 */ GLFW_KEY_WORLD_1,
- /* 33 */ GLFW_KEY_BACKSPACE,
- /* 34 */ -1,
- /* 35 */ GLFW_KEY_ESCAPE,
- /* 36 */ GLFW_KEY_RIGHT_SUPER,
- /* 37 */ GLFW_KEY_LEFT_SUPER,
- /* 38 */ GLFW_KEY_LEFT_SHIFT,
- /* 39 */ GLFW_KEY_CAPS_LOCK,
- /* 3a */ GLFW_KEY_LEFT_ALT,
- /* 3b */ GLFW_KEY_LEFT_CONTROL,
- /* 3c */ GLFW_KEY_RIGHT_SHIFT,
- /* 3d */ GLFW_KEY_RIGHT_ALT,
- /* 3e */ GLFW_KEY_RIGHT_CONTROL,
- /* 3f */ -1, /* Function */
- /* 40 */ GLFW_KEY_F17,
- /* 41 */ GLFW_KEY_KP_DECIMAL,
- /* 42 */ -1,
- /* 43 */ GLFW_KEY_KP_MULTIPLY,
- /* 44 */ -1,
- /* 45 */ GLFW_KEY_KP_ADD,
- /* 46 */ -1,
- /* 47 */ GLFW_KEY_NUM_LOCK, /* Really KeypadClear... */
- /* 48 */ -1, /* VolumeUp */
- /* 49 */ -1, /* VolumeDown */
- /* 4a */ -1, /* Mute */
- /* 4b */ GLFW_KEY_KP_DIVIDE,
- /* 4c */ GLFW_KEY_KP_ENTER,
- /* 4d */ -1,
- /* 4e */ GLFW_KEY_KP_SUBTRACT,
- /* 4f */ GLFW_KEY_F18,
- /* 50 */ GLFW_KEY_F19,
- /* 51 */ GLFW_KEY_KP_EQUAL,
- /* 52 */ GLFW_KEY_KP_0,
- /* 53 */ GLFW_KEY_KP_1,
- /* 54 */ GLFW_KEY_KP_2,
- /* 55 */ GLFW_KEY_KP_3,
- /* 56 */ GLFW_KEY_KP_4,
- /* 57 */ GLFW_KEY_KP_5,
- /* 58 */ GLFW_KEY_KP_6,
- /* 59 */ GLFW_KEY_KP_7,
- /* 5a */ GLFW_KEY_F20,
- /* 5b */ GLFW_KEY_KP_8,
- /* 5c */ GLFW_KEY_KP_9,
- /* 5d */ -1,
- /* 5e */ -1,
- /* 5f */ -1,
- /* 60 */ GLFW_KEY_F5,
- /* 61 */ GLFW_KEY_F6,
- /* 62 */ GLFW_KEY_F7,
- /* 63 */ GLFW_KEY_F3,
- /* 64 */ GLFW_KEY_F8,
- /* 65 */ GLFW_KEY_F9,
- /* 66 */ -1,
- /* 67 */ GLFW_KEY_F11,
- /* 68 */ -1,
- /* 69 */ GLFW_KEY_F13,
- /* 6a */ GLFW_KEY_F16,
- /* 6b */ GLFW_KEY_F14,
- /* 6c */ -1,
- /* 6d */ GLFW_KEY_F10,
- /* 6e */ -1,
- /* 6f */ GLFW_KEY_F12,
- /* 70 */ -1,
- /* 71 */ GLFW_KEY_F15,
- /* 72 */ GLFW_KEY_INSERT, /* Really Help... */
- /* 73 */ GLFW_KEY_HOME,
- /* 74 */ GLFW_KEY_PAGE_UP,
- /* 75 */ GLFW_KEY_DELETE,
- /* 76 */ GLFW_KEY_F4,
- /* 77 */ GLFW_KEY_END,
- /* 78 */ GLFW_KEY_F2,
- /* 79 */ GLFW_KEY_PAGE_DOWN,
- /* 7a */ GLFW_KEY_F1,
- /* 7b */ GLFW_KEY_LEFT,
- /* 7c */ GLFW_KEY_RIGHT,
- /* 7d */ GLFW_KEY_DOWN,
- /* 7e */ GLFW_KEY_UP,
- /* 7f */ -1,
-};
-
-
//========================================================================
// Converts a Mac OS X keycode to a GLFW keycode
//========================================================================
static int convertMacKeyCode(unsigned int macKeyCode)
{
+ // Keyboard symbol translation table
+ // TODO: Need to find mappings for F13-F15, volume down/up/mute, and eject.
+ static const unsigned int table[128] =
+ {
+ /* 00 */ GLFW_KEY_A,
+ /* 01 */ GLFW_KEY_S,
+ /* 02 */ GLFW_KEY_D,
+ /* 03 */ GLFW_KEY_F,
+ /* 04 */ GLFW_KEY_H,
+ /* 05 */ GLFW_KEY_G,
+ /* 06 */ GLFW_KEY_Z,
+ /* 07 */ GLFW_KEY_X,
+ /* 08 */ GLFW_KEY_C,
+ /* 09 */ GLFW_KEY_V,
+ /* 0a */ GLFW_KEY_GRAVE_ACCENT,
+ /* 0b */ GLFW_KEY_B,
+ /* 0c */ GLFW_KEY_Q,
+ /* 0d */ GLFW_KEY_W,
+ /* 0e */ GLFW_KEY_E,
+ /* 0f */ GLFW_KEY_R,
+ /* 10 */ GLFW_KEY_Y,
+ /* 11 */ GLFW_KEY_T,
+ /* 12 */ GLFW_KEY_1,
+ /* 13 */ GLFW_KEY_2,
+ /* 14 */ GLFW_KEY_3,
+ /* 15 */ GLFW_KEY_4,
+ /* 16 */ GLFW_KEY_6,
+ /* 17 */ GLFW_KEY_5,
+ /* 18 */ GLFW_KEY_EQUAL,
+ /* 19 */ GLFW_KEY_9,
+ /* 1a */ GLFW_KEY_7,
+ /* 1b */ GLFW_KEY_MINUS,
+ /* 1c */ GLFW_KEY_8,
+ /* 1d */ GLFW_KEY_0,
+ /* 1e */ GLFW_KEY_RIGHT_BRACKET,
+ /* 1f */ GLFW_KEY_O,
+ /* 20 */ GLFW_KEY_U,
+ /* 21 */ GLFW_KEY_LEFT_BRACKET,
+ /* 22 */ GLFW_KEY_I,
+ /* 23 */ GLFW_KEY_P,
+ /* 24 */ GLFW_KEY_ENTER,
+ /* 25 */ GLFW_KEY_L,
+ /* 26 */ GLFW_KEY_J,
+ /* 27 */ GLFW_KEY_APOSTROPHE,
+ /* 28 */ GLFW_KEY_K,
+ /* 29 */ GLFW_KEY_SEMICOLON,
+ /* 2a */ GLFW_KEY_BACKSLASH,
+ /* 2b */ GLFW_KEY_COMMA,
+ /* 2c */ GLFW_KEY_SLASH,
+ /* 2d */ GLFW_KEY_N,
+ /* 2e */ GLFW_KEY_M,
+ /* 2f */ GLFW_KEY_PERIOD,
+ /* 30 */ GLFW_KEY_TAB,
+ /* 31 */ GLFW_KEY_SPACE,
+ /* 32 */ GLFW_KEY_WORLD_1,
+ /* 33 */ GLFW_KEY_BACKSPACE,
+ /* 34 */ -1,
+ /* 35 */ GLFW_KEY_ESCAPE,
+ /* 36 */ GLFW_KEY_RIGHT_SUPER,
+ /* 37 */ GLFW_KEY_LEFT_SUPER,
+ /* 38 */ GLFW_KEY_LEFT_SHIFT,
+ /* 39 */ GLFW_KEY_CAPS_LOCK,
+ /* 3a */ GLFW_KEY_LEFT_ALT,
+ /* 3b */ GLFW_KEY_LEFT_CONTROL,
+ /* 3c */ GLFW_KEY_RIGHT_SHIFT,
+ /* 3d */ GLFW_KEY_RIGHT_ALT,
+ /* 3e */ GLFW_KEY_RIGHT_CONTROL,
+ /* 3f */ -1, /* Function */
+ /* 40 */ GLFW_KEY_F17,
+ /* 41 */ GLFW_KEY_KP_DECIMAL,
+ /* 42 */ -1,
+ /* 43 */ GLFW_KEY_KP_MULTIPLY,
+ /* 44 */ -1,
+ /* 45 */ GLFW_KEY_KP_ADD,
+ /* 46 */ -1,
+ /* 47 */ GLFW_KEY_NUM_LOCK, /* Really KeypadClear... */
+ /* 48 */ -1, /* VolumeUp */
+ /* 49 */ -1, /* VolumeDown */
+ /* 4a */ -1, /* Mute */
+ /* 4b */ GLFW_KEY_KP_DIVIDE,
+ /* 4c */ GLFW_KEY_KP_ENTER,
+ /* 4d */ -1,
+ /* 4e */ GLFW_KEY_KP_SUBTRACT,
+ /* 4f */ GLFW_KEY_F18,
+ /* 50 */ GLFW_KEY_F19,
+ /* 51 */ GLFW_KEY_KP_EQUAL,
+ /* 52 */ GLFW_KEY_KP_0,
+ /* 53 */ GLFW_KEY_KP_1,
+ /* 54 */ GLFW_KEY_KP_2,
+ /* 55 */ GLFW_KEY_KP_3,
+ /* 56 */ GLFW_KEY_KP_4,
+ /* 57 */ GLFW_KEY_KP_5,
+ /* 58 */ GLFW_KEY_KP_6,
+ /* 59 */ GLFW_KEY_KP_7,
+ /* 5a */ GLFW_KEY_F20,
+ /* 5b */ GLFW_KEY_KP_8,
+ /* 5c */ GLFW_KEY_KP_9,
+ /* 5d */ -1,
+ /* 5e */ -1,
+ /* 5f */ -1,
+ /* 60 */ GLFW_KEY_F5,
+ /* 61 */ GLFW_KEY_F6,
+ /* 62 */ GLFW_KEY_F7,
+ /* 63 */ GLFW_KEY_F3,
+ /* 64 */ GLFW_KEY_F8,
+ /* 65 */ GLFW_KEY_F9,
+ /* 66 */ -1,
+ /* 67 */ GLFW_KEY_F11,
+ /* 68 */ -1,
+ /* 69 */ GLFW_KEY_F13,
+ /* 6a */ GLFW_KEY_F16,
+ /* 6b */ GLFW_KEY_F14,
+ /* 6c */ -1,
+ /* 6d */ GLFW_KEY_F10,
+ /* 6e */ -1,
+ /* 6f */ GLFW_KEY_F12,
+ /* 70 */ -1,
+ /* 71 */ GLFW_KEY_F15,
+ /* 72 */ GLFW_KEY_INSERT, /* Really Help... */
+ /* 73 */ GLFW_KEY_HOME,
+ /* 74 */ GLFW_KEY_PAGE_UP,
+ /* 75 */ GLFW_KEY_DELETE,
+ /* 76 */ GLFW_KEY_F4,
+ /* 77 */ GLFW_KEY_END,
+ /* 78 */ GLFW_KEY_F2,
+ /* 79 */ GLFW_KEY_PAGE_DOWN,
+ /* 7a */ GLFW_KEY_F1,
+ /* 7b */ GLFW_KEY_LEFT,
+ /* 7c */ GLFW_KEY_RIGHT,
+ /* 7d */ GLFW_KEY_DOWN,
+ /* 7e */ GLFW_KEY_UP,
+ /* 7f */ -1,
+ };
+
if (macKeyCode >= 128)
return -1;
// This treats keycodes as *positional*; that is, we'll return 'a'
// for the key left of 's', even on an AZERTY keyboard. The charInput
// function should still get 'q' though.
- return MAC_TO_GLFW_KEYCODE_MAPPING[macKeyCode];
+ return table[macKeyCode];
}
From 5fd66f7d3067e6504e9e18335688c226ce78c045 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Wed, 7 Mar 2012 18:38:08 +0100
Subject: [PATCH 28/62] Free visual list earlier.
---
src/x11_fullscreen.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/x11_fullscreen.c b/src/x11_fullscreen.c
index e71c2a2b3..f7855c4b3 100644
--- a/src/x11_fullscreen.c
+++ b/src/x11_fullscreen.c
@@ -372,6 +372,8 @@ int _glfwPlatformGetVideoModes(GLFWvidmode* list, int maxcount)
}
}
+ XFree(vislist);
+
rescount = 0;
resarray = NULL;
@@ -457,8 +459,6 @@ int _glfwPlatformGetVideoModes(GLFWvidmode* list, int maxcount)
}
}
- XFree(vislist);
-
free(resarray);
free(rgbarray);
From 18efa516a2ce62ea6f5131691ac66013f8d64442 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Thu, 8 Mar 2012 01:01:42 +0100
Subject: [PATCH 29/62] Added modes test.
---
readme.html | 1 +
tests/CMakeLists.txt | 5 +-
tests/modes.c | 225 +++++++++++++++++++++++++++++++++++++++++++
3 files changed, 230 insertions(+), 1 deletion(-)
create mode 100644 tests/modes.c
diff --git a/readme.html b/readme.html
index 5f3af632e..8af1c2e46 100644
--- a/readme.html
+++ b/readme.html
@@ -280,6 +280,7 @@ version of GLFW.
Added windows simple multi-window test program
Added sharing simple OpenGL object sharing test program
Added dynamic simple dynamic linking test program
+ Added modes video mode enumeration and setting test program
Added a parameter to glfwOpenWindow for specifying a context the new window's context will share objects with
Added initial window title parameter to glfwOpenWindow
Added glfwSetGamma, glfwSetGammaRamp and glfwGetGammaRamp functions and GLFWgammaramp type for monitor gamma ramp control
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 663f9a119..7a166881c 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -36,6 +36,9 @@ target_link_libraries(joysticks ${STATIC_DEPS})
add_executable(listmodes listmodes.c)
target_link_libraries(listmodes ${STATIC_DEPS})
+add_executable(modes modes.c getopt.c)
+target_link_libraries(modes ${STATIC_DEPS})
+
add_executable(peter peter.c)
target_link_libraries(peter ${STATIC_DEPS})
@@ -64,7 +67,7 @@ set_target_properties(windows PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Windows")
set(WINDOWS_BINARIES accuracy sharing tearing title windows)
set(CONSOLE_BINARIES defaults events fsaa fsfocus gamma glfwinfo iconify
- joysticks listmodes peter reopen)
+ joysticks listmodes modes peter reopen)
if (MSVC)
# Tell MSVC to use main instead of WinMain for Windows subsystem executables
diff --git a/tests/modes.c b/tests/modes.c
new file mode 100644
index 000000000..de3aec8a3
--- /dev/null
+++ b/tests/modes.c
@@ -0,0 +1,225 @@
+//========================================================================
+// Video mode test
+// Copyright (c) Camilla Berglund
+//
+// 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.
+//
+//========================================================================
+//
+// This test enumerates or verifies video modes
+//
+//========================================================================
+
+#include
+
+#include
+#include
+
+#include "getopt.h"
+
+static GLFWwindow window = NULL;
+
+enum Mode
+{
+ NO_MODE,
+ LIST_MODE,
+ TEST_MODE
+};
+
+static void usage(void)
+{
+ printf("Usage: modes -l\n");
+ printf(" modes -t\n");
+ printf(" modes -h\n");
+}
+
+static void print_mode(GLFWvidmode* mode)
+{
+ printf("%i x %i x %i (%i %i %i)",
+ mode->width, mode->height,
+ mode->redBits + mode->greenBits + mode->blueBits,
+ mode->redBits, mode->greenBits, mode->blueBits);
+}
+
+static void error_callback(int error, const char* description)
+{
+ fprintf(stderr, "Error: %s\n", description);
+}
+
+static void window_size_callback(GLFWwindow window, int width, int height)
+{
+ printf("Window resized to %ix%i\n", width, height);
+
+ glViewport(0, 0, width, height);
+}
+
+static int window_close_callback(GLFWwindow dummy)
+{
+ window = NULL;
+ return GL_TRUE;
+}
+
+static void list_modes(GLFWvidmode* modes, int count)
+{
+ int i;
+ GLFWvidmode mode;
+
+ glfwGetDesktopMode(&mode);
+ printf("Desktop mode: ");
+ print_mode(&mode);
+ putchar('\n');
+
+ for (i = 0; i < count; i++)
+ {
+ printf("%3i: ", i);
+ print_mode(modes + i);
+ putchar('\n');
+ }
+}
+
+static void test_modes(GLFWvidmode* modes, int count)
+{
+ int i, width, height;
+
+ glfwSetWindowSizeCallback(window_size_callback);
+ glfwSetWindowCloseCallback(window_close_callback);
+
+ for (i = 0; i < count; i++)
+ {
+ glfwOpenWindowHint(GLFW_RED_BITS, modes[i].redBits);
+ glfwOpenWindowHint(GLFW_GREEN_BITS, modes[i].greenBits);
+ glfwOpenWindowHint(GLFW_BLUE_BITS, modes[i].blueBits);
+
+ printf("Opening ");
+ print_mode(modes + i);
+ printf(" window\n");
+
+ window = glfwOpenWindow(modes[i].width, modes[i].height,
+ GLFW_FULLSCREEN, "Video Mode Test",
+ NULL);
+ if (!window)
+ {
+ printf("Failed to enter mode %i: ", i);
+ print_mode(modes + i);
+ putchar('\n');
+ continue;
+ }
+
+ glfwSetTime(0.0);
+ glfwSwapInterval(1);
+
+ while (glfwGetTime() < 5.0)
+ {
+ glClear(GL_COLOR_BUFFER_BIT);
+ glfwSwapBuffers();
+ glfwPollEvents();
+
+ if (!window)
+ {
+ printf("User terminated program\n");
+ exit(EXIT_SUCCESS);
+ }
+ }
+
+ if (glfwGetWindowParam(window, GLFW_RED_BITS) != modes[i].redBits ||
+ glfwGetWindowParam(window, GLFW_GREEN_BITS) != modes[i].greenBits ||
+ glfwGetWindowParam(window, GLFW_BLUE_BITS) != modes[i].blueBits)
+ {
+ printf("*** Color bit mismatch: (%i %i %i) instead of (%i %i %i)\n",
+ glfwGetWindowParam(window, GLFW_RED_BITS),
+ glfwGetWindowParam(window, GLFW_GREEN_BITS),
+ glfwGetWindowParam(window, GLFW_BLUE_BITS),
+ modes[i].redBits,
+ modes[i].greenBits,
+ modes[i].blueBits);
+ }
+
+ glfwGetWindowSize(window, &width, &height);
+
+ if (width != modes[i].width || height != height)
+ {
+ printf("*** Size mismatch: %ix%i instead of %ix%i\n",
+ width, height,
+ modes[i].width, modes[i].height);
+ }
+
+ printf("Closing window\n");
+
+ glfwCloseWindow(window);
+ glfwPollEvents();
+ window = NULL;
+
+ sleep(5);
+ }
+}
+
+int main(int argc, char** argv)
+{
+ int ch, found, count = 0, mode = NO_MODE;
+ GLFWvidmode* modes = NULL;
+
+ while ((ch = getopt(argc, argv, "lth")) != -1)
+ {
+ switch (ch)
+ {
+ case 'h':
+ usage();
+ exit(EXIT_SUCCESS);
+ case 'l':
+ mode = LIST_MODE;
+ break;
+ case 't':
+ mode = TEST_MODE;
+ break;
+ default:
+ usage();
+ exit(EXIT_FAILURE);
+ }
+ }
+
+ argc -= optind;
+ argv += optind;
+
+ glfwSetErrorCallback(error_callback);
+
+ if (!glfwInit())
+ exit(EXIT_FAILURE);
+
+ for (;;)
+ {
+ count += 256;
+ modes = realloc(modes, sizeof(GLFWvidmode) * count);
+
+ found = glfwGetVideoModes(modes, count);
+ if (found < count)
+ break;
+ }
+
+ if (mode == LIST_MODE)
+ list_modes(modes, found);
+ else if (mode == TEST_MODE)
+ test_modes(modes, found);
+
+ free(modes);
+ modes = NULL;
+
+ exit(EXIT_SUCCESS);
+}
+
From 21f2327e563f1b3c996bbb535d14daa417434edb Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sat, 10 Mar 2012 16:23:09 +0100
Subject: [PATCH 30/62] Formatting.
---
src/input.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/input.c b/src/input.c
index ec894a279..ded88712f 100644
--- a/src/input.c
+++ b/src/input.c
@@ -167,7 +167,7 @@ void _glfwInputKey(_GLFWwindow* window, int key, int action)
return;
// Register key action
- if(action == GLFW_RELEASE && window->stickyKeys)
+ if (action == GLFW_RELEASE && window->stickyKeys)
window->key[key] = GLFW_STICK;
else
{
From eb83a3e8f9ba5aa68e0a17a2c935be93cb6c5aeb Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Tue, 20 Mar 2012 15:23:35 +0100
Subject: [PATCH 31/62] Replaced final deprecated Core Graphics call.
---
readme.html | 2 +-
src/cocoa_init.m | 13 +++++++++++++
src/cocoa_platform.h | 1 +
src/cocoa_window.m | 5 -----
4 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/readme.html b/readme.html
index 5f3af632e..bde16bcf4 100644
--- a/readme.html
+++ b/readme.html
@@ -312,7 +312,7 @@ version of GLFW.
[Cocoa] Added support for joysticks
[Cocoa] Postponed menu creation to first window creation
[Cocoa] Replaced NSDate time source with mach_absolute_time
- [Cocoa] Replaced deprecated CoreGraphics calls in video mode enumeration and setting
+ [Cocoa] Replaced all deprecated CoreGraphics calls with non-deprecated counterparts
[Cocoa] Bugfix: glfwOpenWindow did not properly enforce the forward-compatible and context profile hints
[Cocoa] Bugfix: The loop condition for saving video modes used the wrong index variable
[Cocoa] Bugfix: The OpenGL framework was not retrieved, making glfwGetProcAddress crash
diff --git a/src/cocoa_init.m b/src/cocoa_init.m
index 89260c56d..008987781 100644
--- a/src/cocoa_init.m
+++ b/src/cocoa_init.m
@@ -102,6 +102,13 @@ int _glfwPlatformInit(void)
_glfwInitJoysticks();
+ _glfwLibrary.NS.eventSource = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
+ if (!_glfwLibrary.NS.eventSource)
+ return GL_FALSE;
+
+ CGEventSourceSetLocalEventsSuppressionInterval(_glfwLibrary.NS.eventSource,
+ 0.0);
+
return GL_TRUE;
}
@@ -113,6 +120,12 @@ int _glfwPlatformTerminate(void)
{
// TODO: Probably other cleanup
+ if (_glfwLibrary.NS.eventSource)
+ {
+ CFRelease(_glfwLibrary.NS.eventSource);
+ _glfwLibrary.NS.eventSource = NULL;
+ }
+
// Restore the original gamma ramp
_glfwPlatformSetGammaRamp(&_glfwLibrary.originalRamp);
diff --git a/src/cocoa_platform.h b/src/cocoa_platform.h
index a06c13a0f..b70fb184f 100644
--- a/src/cocoa_platform.h
+++ b/src/cocoa_platform.h
@@ -93,6 +93,7 @@ typedef struct _GLFWlibraryNS
// dlopen handle for dynamically loading OpenGL extension entry points
void* OpenGLFramework;
CGDisplayModeRef desktopMode;
+ CGEventSourceRef eventSource;
id delegate;
id autoreleasePool;
} _GLFWlibraryNS;
diff --git a/src/cocoa_window.m b/src/cocoa_window.m
index c1d710c08..9d5ee5ece 100644
--- a/src/cocoa_window.m
+++ b/src/cocoa_window.m
@@ -1108,11 +1108,6 @@ void _glfwPlatformSetMouseCursorPos(_GLFWwindow* window, int x, int y)
// calculating the maximum y coordinate of all screens, since Cocoa's
// "global coordinates" are upside down from CG's...
- // Without this (once per app run, but it's convenient to do it here)
- // events will be suppressed for a default of 0.25 seconds after we
- // move the cursor.
- CGSetLocalEventsSuppressionInterval(0.0);
-
NSPoint localPoint = NSMakePoint(x, y);
NSPoint globalPoint = [window->NS.window convertBaseToScreen:localPoint];
CGPoint mainScreenOrigin = CGDisplayBounds(CGMainDisplayID()).origin;
From c58750ef927579a60a8a58d9fc5253094e49424e Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Tue, 20 Mar 2012 15:30:46 +0100
Subject: [PATCH 32/62] Applied fix for pixel format creation failure.
---
readme.html | 1 +
src/cocoa_window.m | 1 -
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/readme.html b/readme.html
index 33832689c..0f0838dec 100644
--- a/readme.html
+++ b/readme.html
@@ -314,6 +314,7 @@ version of GLFW.
[Cocoa] Postponed menu creation to first window creation
[Cocoa] Replaced NSDate time source with mach_absolute_time
[Cocoa] Replaced all deprecated CoreGraphics calls with non-deprecated counterparts
+ [Cocoa] Bugfix: The NSOpenGLPFAFullScreen pixel format attribute caused creation to fail on some machines
[Cocoa] Bugfix: glfwOpenWindow did not properly enforce the forward-compatible and context profile hints
[Cocoa] Bugfix: The loop condition for saving video modes used the wrong index variable
[Cocoa] Bugfix: The OpenGL framework was not retrieved, making glfwGetProcAddress crash
diff --git a/src/cocoa_window.m b/src/cocoa_window.m
index dd5483617..5bb330977 100644
--- a/src/cocoa_window.m
+++ b/src/cocoa_window.m
@@ -734,7 +734,6 @@ static GLboolean createContext(_GLFWwindow* window,
if (wndconfig->mode == GLFW_FULLSCREEN)
{
- ADD_ATTR(NSOpenGLPFAFullScreen);
ADD_ATTR(NSOpenGLPFANoRecovery);
ADD_ATTR2(NSOpenGLPFAScreenMask,
CGDisplayIDToOpenGLDisplayMask(CGMainDisplayID()));
From 3a8b4b3a843d34a3a8d458b0ff59b4061dbdcc56 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Tue, 20 Mar 2012 15:44:25 +0100
Subject: [PATCH 33/62] Added credit.
---
readme.html | 2 ++
1 file changed, 2 insertions(+)
diff --git a/readme.html b/readme.html
index 0f0838dec..d7442d3b9 100644
--- a/readme.html
+++ b/readme.html
@@ -823,6 +823,8 @@ their skills. Special thanks go out to:
+ - artblanc, for a patch replacing a deprecated Core Graphics call
+
- Bobyshev Alexander and Martins Mozeiko, for the original proposal of
an FSAA hint and their work on the Win32 implementation of FSAA
From df1af5ca7597899b3e254fe8cb58b42ea64a5368 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Tue, 20 Mar 2012 20:00:04 +0100
Subject: [PATCH 34/62] I am POSIXed.
---
src/x11_time.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/src/x11_time.c b/src/x11_time.c
index e22039410..4184d326b 100644
--- a/src/x11_time.c
+++ b/src/x11_time.c
@@ -39,7 +39,7 @@
static uint64_t getRawTime(void)
{
-#if defined(_POSIX_TIMERS) && defined(_POSIX_MONOTONIC_CLOCK)
+#if defined(CLOCK_MONOTONIC)
if (_glfwLibrary.X11.timer.monotonic)
{
struct timespec ts;
@@ -64,7 +64,7 @@ static uint64_t getRawTime(void)
void _glfwInitTimer(void)
{
-#if defined(_POSIX_TIMERS) && defined(_POSIX_MONOTONIC_CLOCK)
+#if defined(CLOCK_MONOTONIC)
struct timespec ts;
if (clock_gettime(CLOCK_MONOTONIC, &ts) == 0)
From d976a7a86df4de24e20ba14ba99e5c5290b5705e Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Thu, 22 Mar 2012 14:27:19 +0100
Subject: [PATCH 35/62] Added Win32 library binaries.
---
.gitignore | 3 +++
1 file changed, 3 insertions(+)
diff --git a/.gitignore b/.gitignore
index fad26de16..0496a03c8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,9 @@ src/libglfw.pc
src/libglfw.so
src/libglfw.a
src/libglfw.dylib
+src/glfw.lib
+src/glfw.dll
+src/glfwdll.lib
examples/boing
examples/gears
examples/heightmap
From 812ad163ebefa787437ecb6e5d58426b9e23f7d8 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Thu, 22 Mar 2012 14:29:23 +0100
Subject: [PATCH 36/62] Formatting.
---
src/CMakeLists.txt | 12 ++++++------
1 file changed, 6 insertions(+), 6 deletions(-)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index bdc4d5fe7..7c66ba970 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,5 +1,5 @@
-if(UNIX)
+if (UNIX)
if (_GLFW_HAS_XRANDR)
set(GLFW_PKGLIBS "${GLFW_PKGLIBS} xrandr")
endif()
@@ -18,19 +18,19 @@ include_directories(${GLFW_SOURCE_DIR}/src
set(common_SOURCES error.c fullscreen.c gamma.c init.c input.c
joystick.c opengl.c time.c window.c)
-if(_GLFW_COCOA_NSGL)
+if (_GLFW_COCOA_NSGL)
set(libglfw_SOURCES ${common_SOURCES} cocoa_fullscreen.m cocoa_gamma.c
cocoa_init.m cocoa_input.m cocoa_joystick.m
cocoa_opengl.m cocoa_time.c cocoa_window.m)
# For some reason, CMake doesn't know about .m
set_source_files_properties(${libglfw_SOURCES} PROPERTIES LANGUAGE C)
-elseif(_GLFW_WIN32_WGL)
+elseif (_GLFW_WIN32_WGL)
set(libglfw_SOURCES ${common_SOURCES} win32_fullscreen.c win32_gamma.c
win32_init.c win32_input.c win32_joystick.c
win32_opengl.c win32_time.c win32_window.c
win32_dllmain.c)
-elseif(_GLFW_X11_GLX)
+elseif (_GLFW_X11_GLX)
set(libglfw_SOURCES ${common_SOURCES} x11_fullscreen.c x11_gamma.c
x11_init.c x11_input.c x11_joystick.c
x11_keysym2unicode.c x11_opengl.c x11_time.c
@@ -46,7 +46,7 @@ set_target_properties(libglfwStatic libglfwShared PROPERTIES
CLEAN_DIRECT_OUTPUT 1
OUTPUT_NAME glfw)
-if(WIN32)
+if (WIN32)
target_link_libraries(libglfwShared winmm)
# The GLFW DLL needs a special compile-time macro and import library name
set_target_properties(libglfwShared PROPERTIES
@@ -56,7 +56,7 @@ if(WIN32)
IMPORT_SUFFIX "dll.lib")
endif()
-if(APPLE)
+if (APPLE)
# Append -fno-common to the compile flags to work around a bug in the Apple GCC
get_target_property(CFLAGS libglfwShared COMPILE_FLAGS)
if (NOT CFLAGS)
From 8d2c2791c2566109d91ff3033f7e81d10fdd4346 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Thu, 22 Mar 2012 14:58:14 +0100
Subject: [PATCH 37/62] Added initial Linux MinGW-w64 support.
---
CMake/linux-amd64-mingw32msvc.cmake | 15 +++++++++++++++
include/GL/glfw3.h | 6 ++++++
src/win32_init.c | 4 ++--
src/win32_platform.h | 2 ++
4 files changed, 25 insertions(+), 2 deletions(-)
create mode 100644 CMake/linux-amd64-mingw32msvc.cmake
diff --git a/CMake/linux-amd64-mingw32msvc.cmake b/CMake/linux-amd64-mingw32msvc.cmake
new file mode 100644
index 000000000..5b68540e9
--- /dev/null
+++ b/CMake/linux-amd64-mingw32msvc.cmake
@@ -0,0 +1,15 @@
+# Define the cross compilation environment for cross compiling from linux
+# to Win64 it is to be used when Debian cross compilation toolchain is
+# available.
+SET(CMAKE_SYSTEM_NAME Windows) # Target system name
+SET(CMAKE_SYSTEM_VERSION 1) # Not really used.
+SET(CMAKE_C_COMPILER "amd64-mingw32msvc-gcc")
+SET(CMAKE_CXX_COMPILER "amd64-mingw32msvc-g++")
+SET(CMAKE_RANLIB "amd64-mingw32msvc-ranlib")
+
+
+#Configure the behaviour of the find commands
+SET(CMAKE_FIND_ROOT_PATH "/usr/amd64-mingw32msvc")
+SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
diff --git a/include/GL/glfw3.h b/include/GL/glfw3.h
index cc817521e..44e26b62e 100644
--- a/include/GL/glfw3.h
+++ b/include/GL/glfw3.h
@@ -67,6 +67,12 @@ extern "C" {
#endif
#endif /* APIENTRY */
+/* TEMPORARY MinGW-w64 hacks.
+ */
+#if __MINGW64__
+ #define WINAPI
+#include
+#endif
/* The following three defines are here solely to make some Windows-based
* files happy. Theoretically we could include , but
diff --git a/src/win32_init.c b/src/win32_init.c
index 4e1b7863b..4fab9b747 100644
--- a/src/win32_init.c
+++ b/src/win32_init.c
@@ -200,7 +200,7 @@ int _glfwPlatformInit(void)
// as possible in the hope of still being the foreground process)
SystemParametersInfo(SPI_GETFOREGROUNDLOCKTIMEOUT, 0,
&_glfwLibrary.Win32.foregroundLockTimeout, 0);
- SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, (LPVOID) 0,
+ SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0, UIntToPtr(0),
SPIF_SENDCHANGE);
if (!initLibraries())
@@ -246,7 +246,7 @@ int _glfwPlatformTerminate(void)
// Restore previous FOREGROUNDLOCKTIMEOUT system setting
SystemParametersInfo(SPI_SETFOREGROUNDLOCKTIMEOUT, 0,
- (LPVOID) _glfwLibrary.Win32.foregroundLockTimeout,
+ UIntToPtr(_glfwLibrary.Win32.foregroundLockTimeout),
SPIF_SENDCHANGE);
return GL_TRUE;
diff --git a/src/win32_platform.h b/src/win32_platform.h
index 82b8c9caa..0f6362c1b 100644
--- a/src/win32_platform.h
+++ b/src/win32_platform.h
@@ -51,7 +51,9 @@
#endif
// GLFW requires Windows XP
+#ifndef WINVER
#define WINVER 0x0501
+#endif
#include
#include
From d204d5a434f51b0ddaab6537bd7acff0e288c55b Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Thu, 22 Mar 2012 23:25:39 +0100
Subject: [PATCH 38/62] Enabled all warnings on GNU C and compatibles.
---
CMakeLists.txt | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f27cf7cdb..57b8755f8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,6 +14,10 @@ option(GLFW_BUILD_TESTS "Build the GLFW test programs" ON)
find_package(OpenGL REQUIRED)
+if (CMAKE_COMPILER_IS_GNUCC)
+ add_definitions(-Wall)
+endif()
+
#--------------------------------------------------------------------
# Set up GLFW for Win32 and WGL on Windows
#--------------------------------------------------------------------
From 08942fcabe4474310a0d57176ae10b7842451276 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Thu, 22 Mar 2012 23:28:43 +0100
Subject: [PATCH 39/62] Removed call to non-portable function.
---
tests/modes.c | 2 --
1 file changed, 2 deletions(-)
diff --git a/tests/modes.c b/tests/modes.c
index de3aec8a3..9c558d47a 100644
--- a/tests/modes.c
+++ b/tests/modes.c
@@ -165,8 +165,6 @@ static void test_modes(GLFWvidmode* modes, int count)
glfwCloseWindow(window);
glfwPollEvents();
window = NULL;
-
- sleep(5);
}
}
From c2a2114590ed289a14e64fcce614b852237f7b0f Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Thu, 22 Mar 2012 23:30:00 +0100
Subject: [PATCH 40/62] Fixed GCC warnings.
---
src/x11_fullscreen.c | 2 +-
src/x11_init.c | 4 ++--
src/x11_time.c | 1 +
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/x11_fullscreen.c b/src/x11_fullscreen.c
index f7855c4b3..37a3ae98b 100644
--- a/src/x11_fullscreen.c
+++ b/src/x11_fullscreen.c
@@ -323,7 +323,7 @@ struct _glfwResolution
int _glfwPlatformGetVideoModes(GLFWvidmode* list, int maxcount)
{
int count, k, l, r, g, b, rgba, gl;
- int depth, screen;
+ int depth, screen = DefaultScreen(_glfwLibrary.X11.display);
XVisualInfo* vislist;
XVisualInfo dummy;
int viscount, rgbcount, rescount;
diff --git a/src/x11_init.c b/src/x11_init.c
index 3ed9ab135..d57af27e6 100644
--- a/src/x11_init.c
+++ b/src/x11_init.c
@@ -470,8 +470,8 @@ static void initGammaRamp(void)
// RandR gamma support is only available with version 1.2 and above
if (_glfwLibrary.X11.RandR.available &&
(_glfwLibrary.X11.RandR.majorVersion > 1 ||
- _glfwLibrary.X11.RandR.majorVersion == 1 &&
- _glfwLibrary.X11.RandR.minorVersion >= 2))
+ (_glfwLibrary.X11.RandR.majorVersion == 1 &&
+ _glfwLibrary.X11.RandR.minorVersion >= 2)))
{
// FIXME: Assumes that all monitors have the same size gamma tables
// This is reasonable as I suspect the that if they did differ, it
diff --git a/src/x11_time.c b/src/x11_time.c
index 4184d326b..f14452335 100644
--- a/src/x11_time.c
+++ b/src/x11_time.c
@@ -30,6 +30,7 @@
#include "internal.h"
+#include
#include
From 29d38c3b649cbe5fecd315bab47c263852e24d2e Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Fri, 23 Mar 2012 15:27:50 +0100
Subject: [PATCH 41/62] Increased Cocoa pixel format attribute array size.
---
src/cocoa_window.m | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/cocoa_window.m b/src/cocoa_window.m
index 5bb330977..98c220edf 100644
--- a/src/cocoa_window.m
+++ b/src/cocoa_window.m
@@ -728,7 +728,7 @@ static GLboolean createContext(_GLFWwindow* window,
#define ADD_ATTR2(x, y) { ADD_ATTR(x); ADD_ATTR(y); }
// Arbitrary array size here
- NSOpenGLPixelFormatAttribute attributes[24];
+ NSOpenGLPixelFormatAttribute attributes[40];
ADD_ATTR(NSOpenGLPFADoubleBuffer);
From c175084e1310abdd98e5560416bf6e484cc113a1 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 13:47:13 +0200
Subject: [PATCH 42/62] Added workaround for CMake bug 0006976.
---
CMakeLists.txt | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 57b8755f8..d30b1ee0d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -73,6 +73,14 @@ if (UNIX AND NOT APPLE)
if (X11_xf86vmode_FOUND)
set(_GLFW_HAS_XF86VIDMODE 1)
list(APPEND GLFW_INCLUDE_DIR ${X11_xf86vmode_INCLUDE_PATH})
+
+ # NOTE: This is a workaround for CMake bug 0006976 (missing
+ # X11_xf86vmode_LIB variable)
+ if (X11_xf86vmode_LIB)
+ list(APPEND GLFW_LIBRARIES ${X11_xf86vmode_LIB})
+ else()
+ list(APPEND GLFW_LIBRARIES Xxf86vm)
+ endif()
endif()
# Check for Xkb (X keyboard extension)
From 7f1d91e67b9904a6c64f3aab1f9df1da3603b8be Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 13:49:35 +0200
Subject: [PATCH 43/62] Formatting.
---
CMakeLists.txt | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d30b1ee0d..d09ba1868 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -120,7 +120,7 @@ if (UNIX AND APPLE)
# Define the platform identifier
set(_GLFW_COCOA_NSGL 1)
- option(GLFW_BUILD_UNIVERSAL "Build the GLFW library and examples as Universal Binaries" FALSE)
+ option(GLFW_BUILD_UNIVERSAL "Build GLFW as a Universal Binary" OFF)
# Universal build
if (GLFW_BUILD_UNIVERSAL)
@@ -136,10 +136,10 @@ if (UNIX AND APPLE)
find_library(COCOA_FRAMEWORK Cocoa)
find_library(IOKIT_FRAMEWORK IOKit)
find_library(CORE_FOUNDATION_FRAMEWORK CoreFoundation)
- list(APPEND GLFW_LIBRARIES ${COCOA_FRAMEWORK})
- list(APPEND GLFW_LIBRARIES ${OPENGL_gl_LIBRARY})
- list(APPEND GLFW_LIBRARIES ${IOKIT_FRAMEWORK})
- list(APPEND GLFW_LIBRARIES ${CORE_FOUNDATION_FRAMEWORK})
+ list(APPEND GLFW_LIBRARIES ${COCOA_FRAMEWORK}
+ ${OPENGL_gl_LIBRARY}
+ ${IOKIT_FRAMEWORK}
+ ${CORE_FOUNDATION_FRAMEWORK})
endif()
#--------------------------------------------------------------------
From f21f196036234077083ac9d70d536b773cde0307 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 13:52:35 +0200
Subject: [PATCH 44/62] Added comment.
---
CMakeLists.txt | 3 +++
1 file changed, 3 insertions(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d09ba1868..fc9fa103c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -14,6 +14,9 @@ option(GLFW_BUILD_TESTS "Build the GLFW test programs" ON)
find_package(OpenGL REQUIRED)
+#--------------------------------------------------------------------
+# Enable all warnings on GCC, regardless of OS
+#--------------------------------------------------------------------
if (CMAKE_COMPILER_IS_GNUCC)
add_definitions(-Wall)
endif()
From 7b46a184cb0d1637ebb416b9ed578cbf2142046e Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 13:53:53 +0200
Subject: [PATCH 45/62] Added standard option to switch between static and
dynamic library, dropped dynamic test.
---
CMakeLists.txt | 5 +++
examples/CMakeLists.txt | 12 ++++--
readme.html | 1 -
src/CMakeLists.txt | 45 ++++++++++----------
tests/CMakeLists.txt | 40 ++++--------------
tests/dynamic.c | 91 -----------------------------------------
6 files changed, 43 insertions(+), 151 deletions(-)
delete mode 100644 tests/dynamic.c
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fc9fa103c..509ce57fa 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -11,6 +11,7 @@ set(GLFW_VERSION_FULL "${GLFW_VERSION}.${GLFW_VERSION_PATCH}${GLFW_VERSION_EXTRA
option(GLFW_BUILD_EXAMPLES "Build the GLFW example programs" ON)
option(GLFW_BUILD_TESTS "Build the GLFW test programs" ON)
+option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
find_package(OpenGL REQUIRED)
@@ -33,6 +34,10 @@ if (WIN32)
# Set up library and include paths
list(APPEND GLFW_INCLUDE_DIR ${OPENGL_INCLUDE_DIR})
list(APPEND GLFW_LIBRARIES ${OPENGL_gl_LIBRARY})
+
+ if (BUILD_SHARED_LIBS)
+ list(APPEND GLFW_LIBRARIES winmm)
+ endif()
endif()
#--------------------------------------------------------------------
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index a644b9870..b677addd2 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -1,7 +1,11 @@
-# This line is used to link with static libraries
-# Note that the library list should be updated to be obtained from
-# the main CMakeLists.txt
-link_libraries(libglfwStatic ${GLFW_LIBRARIES} ${OPENGL_glu_LIBRARY})
+
+link_libraries(glfw ${OPENGL_glu_LIBRARY})
+
+if (BUILD_SHARED_LIBS)
+ add_definitions(-DGLFW_DLL)
+else()
+ link_libraries(${GLFW_LIBRARIES})
+endif()
include_directories(${GLFW_SOURCE_DIR}/include
${GLFW_SOURCE_DIR}/support
diff --git a/readme.html b/readme.html
index d7442d3b9..84cc2a665 100644
--- a/readme.html
+++ b/readme.html
@@ -279,7 +279,6 @@ version of GLFW.
- Added
GLFW_INCLUDE_GL3 macro for telling the GLFW header to include gl3.h header instead of gl.h
- Added
windows simple multi-window test program
- Added
sharing simple OpenGL object sharing test program
- - Added
dynamic simple dynamic linking test program
- Added
modes video mode enumeration and setting test program
- Added a parameter to
glfwOpenWindow for specifying a context the new window's context will share objects with
- Added initial window title parameter to
glfwOpenWindow
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7c66ba970..e508f2597 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -39,31 +39,32 @@ else()
message(FATAL_ERROR "No supported platform was selected")
endif()
-add_library(libglfwStatic STATIC ${libglfw_SOURCES})
-add_library(libglfwShared SHARED ${libglfw_SOURCES})
-target_link_libraries(libglfwShared ${GLFW_LIBRARIES})
-set_target_properties(libglfwStatic libglfwShared PROPERTIES
- CLEAN_DIRECT_OUTPUT 1
- OUTPUT_NAME glfw)
+add_library(glfw ${libglfw_SOURCES})
-if (WIN32)
- target_link_libraries(libglfwShared winmm)
- # The GLFW DLL needs a special compile-time macro and import library name
- set_target_properties(libglfwShared PROPERTIES
- COMPILE_DEFINITIONS "GLFW_BUILD_DLL;_GLFW_NO_DLOAD_GDI32;_GLFW_NO_DLOAD_WINMM"
- PREFIX ""
- IMPORT_PREFIX ""
- IMPORT_SUFFIX "dll.lib")
-endif()
+if (BUILD_SHARED_LIBS)
-if (APPLE)
- # Append -fno-common to the compile flags to work around a bug in the Apple GCC
- get_target_property(CFLAGS libglfwShared COMPILE_FLAGS)
- if (NOT CFLAGS)
- set(CFLAGS "")
+ if (WIN32)
+ # The GLFW DLL needs a special compile-time macro and import library name
+ set_target_properties(glfw PROPERTIES
+ COMPILE_DEFINITIONS "GLFW_BUILD_DLL;_GLFW_NO_DLOAD_GDI32;_GLFW_NO_DLOAD_WINMM"
+ PREFIX ""
+ IMPORT_PREFIX ""
+ IMPORT_SUFFIX "dll.lib")
endif()
- set_target_properties(libglfwShared PROPERTIES COMPILE_FLAGS "${CFLAGS} -fno-common")
+
+ if (APPLE)
+ # Append -fno-common to the compile flags to work around a bug in the Apple GCC
+ get_target_property(CFLAGS glfw COMPILE_FLAGS)
+ if (NOT CFLAGS)
+ set(CFLAGS "")
+ endif()
+ set_target_properties(glfw PROPERTIES COMPILE_FLAGS "${CFLAGS} -fno-common")
+ endif()
+
+ target_link_libraries(glfw ${GLFW_LIBRARIES})
+ target_link_libraries(glfw LINK_INTERFACE_LIBRARIES)
+
endif()
-install(TARGETS libglfwStatic libglfwShared DESTINATION lib)
+install(TARGETS glfw DESTINATION lib)
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 7a166881c..43db9d22c 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -1,68 +1,42 @@
-set(STATIC_DEPS libglfwStatic ${GLFW_LIBRARIES} ${OPENGL_glu_LIBRARY})
-set(SHARED_DEPS libglfwShared ${GLFW_LIBRARIES} ${OPENGL_glu_LIBRARY})
+link_libraries(glfw ${OPENGL_glu_LIBRARY})
+
+if (BUILD_SHARED_LIBS)
+ add_definitions(-DGLFW_DLL)
+else()
+ link_libraries(${GLFW_LIBRARIES})
+endif()
include_directories(${GLFW_SOURCE_DIR}/include
${GLFW_SOURCE_DIR}/support
${OPENGL_INCLUDE_DIR})
add_executable(defaults defaults.c)
-target_link_libraries(defaults ${STATIC_DEPS})
-
-add_executable(dynamic dynamic.c)
-target_link_libraries(dynamic ${SHARED_DEPS})
-
add_executable(events events.c)
-target_link_libraries(events ${STATIC_DEPS})
-
add_executable(fsaa fsaa.c getopt.c)
-target_link_libraries(fsaa ${STATIC_DEPS})
-
add_executable(fsfocus fsfocus.c)
-target_link_libraries(fsfocus ${STATIC_DEPS})
-
add_executable(gamma gamma.c getopt.c)
-target_link_libraries(gamma ${STATIC_DEPS})
-
add_executable(glfwinfo glfwinfo.c getopt.c)
-target_link_libraries(glfwinfo ${STATIC_DEPS})
-
add_executable(iconify iconify.c getopt.c)
-target_link_libraries(iconify ${STATIC_DEPS})
-
add_executable(joysticks joysticks.c)
-target_link_libraries(joysticks ${STATIC_DEPS})
-
add_executable(listmodes listmodes.c)
-target_link_libraries(listmodes ${STATIC_DEPS})
-
add_executable(modes modes.c getopt.c)
-target_link_libraries(modes ${STATIC_DEPS})
-
add_executable(peter peter.c)
-target_link_libraries(peter ${STATIC_DEPS})
-
add_executable(reopen reopen.c)
-target_link_libraries(reopen ${STATIC_DEPS})
add_executable(accuracy WIN32 MACOSX_BUNDLE accuracy.c)
-target_link_libraries(accuracy ${STATIC_DEPS})
set_target_properties(accuracy PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Accuracy")
add_executable(sharing WIN32 MACOSX_BUNDLE sharing.c)
-target_link_libraries(sharing ${STATIC_DEPS})
set_target_properties(sharing PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Sharing")
add_executable(tearing WIN32 MACOSX_BUNDLE tearing.c)
-target_link_libraries(tearing ${STATIC_DEPS})
set_target_properties(tearing PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Tearing")
add_executable(title WIN32 MACOSX_BUNDLE title.c)
-target_link_libraries(title ${STATIC_DEPS})
set_target_properties(title PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Title")
add_executable(windows WIN32 MACOSX_BUNDLE windows.c)
-target_link_libraries(windows ${STATIC_DEPS})
set_target_properties(windows PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Windows")
set(WINDOWS_BINARIES accuracy sharing tearing title windows)
diff --git a/tests/dynamic.c b/tests/dynamic.c
deleted file mode 100644
index 8bc5568b2..000000000
--- a/tests/dynamic.c
+++ /dev/null
@@ -1,91 +0,0 @@
-//========================================================================
-// Dynamic linking test
-// Copyright (c) Camilla Berglund
-//
-// 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.
-//
-//========================================================================
-//
-// This test came about as the result of bug #3060461
-//
-//========================================================================
-
-#define GLFW_DLL
-#include
-
-#include
-#include
-
-static void window_size_callback(GLFWwindow window, int width, int height)
-{
- glViewport(0, 0, width, height);
-}
-
-int main(void)
-{
- GLFWwindow window;
- int major, minor, rev;
- glfwGetVersion(&major, &minor, &rev);
-
- printf("GLFW header version: %i.%i.%i\n",
- GLFW_VERSION_MAJOR,
- GLFW_VERSION_MINOR,
- GLFW_VERSION_REVISION);
- printf("GLFW library version: %i.%i.%i\n", major, minor, rev);
- printf("GLFW library version string: %s\n", glfwGetVersionString());
-
- if (major != GLFW_VERSION_MAJOR ||
- minor != GLFW_VERSION_MINOR ||
- rev != GLFW_VERSION_REVISION)
- {
- fprintf(stderr, "GLFW library version mismatch\n");
- exit(EXIT_FAILURE);
- }
-
- if (!glfwInit())
- {
- fprintf(stderr, "Failed to initialize GLFW\n");
- exit(EXIT_FAILURE);
- }
-
- window = glfwOpenWindow(0, 0, GLFW_WINDOWED, "Dynamic Linking Test", NULL);
- if (!window)
- {
- glfwTerminate();
-
- fprintf(stderr, "Failed to open GLFW window\n");
- exit(EXIT_FAILURE);
- }
-
- glfwSetWindowSizeCallback(window_size_callback);
- glfwSwapInterval(1);
-
- while (glfwIsWindow(window))
- {
- glClear(GL_COLOR_BUFFER_BIT);
-
- glfwSwapBuffers();
- glfwPollEvents();
- }
-
- glfwTerminate();
- exit(EXIT_SUCCESS);
-}
-
From 23776f67e3708883dad557d1e0ed748f0bf3a7ac Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 13:58:07 +0200
Subject: [PATCH 46/62] Formatting.
---
CMakeLists.txt | 2 +-
examples/CMakeLists.txt | 4 ++--
tests/CMakeLists.txt | 4 ++--
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 509ce57fa..2cd65cb36 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -19,7 +19,7 @@ find_package(OpenGL REQUIRED)
# Enable all warnings on GCC, regardless of OS
#--------------------------------------------------------------------
if (CMAKE_COMPILER_IS_GNUCC)
- add_definitions(-Wall)
+ add_definitions(-Wall)
endif()
#--------------------------------------------------------------------
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index b677addd2..2bdd95e9a 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -2,9 +2,9 @@
link_libraries(glfw ${OPENGL_glu_LIBRARY})
if (BUILD_SHARED_LIBS)
- add_definitions(-DGLFW_DLL)
+ add_definitions(-DGLFW_DLL)
else()
- link_libraries(${GLFW_LIBRARIES})
+ link_libraries(${GLFW_LIBRARIES})
endif()
include_directories(${GLFW_SOURCE_DIR}/include
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 43db9d22c..f6749e543 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -2,9 +2,9 @@
link_libraries(glfw ${OPENGL_glu_LIBRARY})
if (BUILD_SHARED_LIBS)
- add_definitions(-DGLFW_DLL)
+ add_definitions(-DGLFW_DLL)
else()
- link_libraries(${GLFW_LIBRARIES})
+ link_libraries(${GLFW_LIBRARIES})
endif()
include_directories(${GLFW_SOURCE_DIR}/include
From 9e8f5477748814f87ddc362df264b2dc01448bdd Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 13:59:34 +0200
Subject: [PATCH 47/62] Formatting.
---
CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 2cd65cb36..853111887 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -177,7 +177,7 @@ install(DIRECTORY include/GL DESTINATION include
FILES_MATCHING PATTERN glfw3.h)
install(FILES COPYING.txt readme.html
- DESTINATION share/doc/glfw-${GLFW_VERSION_FULL}/)
+ DESTINATION share/doc/glfw-${GLFW_VERSION_FULL})
# The src directory's CMakeLists.txt file installs the library
From 4a905d2e28144d6deeb962e4d073386b798a328b Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 14:43:23 +0200
Subject: [PATCH 48/62] Comment update.
---
CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 853111887..f5b08c1e8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -68,6 +68,7 @@ if (UNIX AND NOT APPLE)
include(CheckFunctionExists)
include(CheckSymbolExists)
+ # This is needed by the GLX function checks below
set(CMAKE_REQUIRED_LIBRARIES ${GLFW_LIBRARIES})
# Check for XRandR (modern resolution switching extension)
@@ -97,7 +98,6 @@ if (UNIX AND NOT APPLE)
list(APPEND GLFW_INCLUDE_DIR ${X11_Xkb_INCLUDE_PATH})
endif()
- # Check for glXGetProcAddress
check_function_exists(glXGetProcAddress _GLFW_HAS_GLXGETPROCADDRESS)
if (NOT _GLFW_HAS_GLXGETPROCADDRESS)
From d743793e71ad3b0089a39f443c75391b832c3ee4 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 14:51:56 +0200
Subject: [PATCH 49/62] Pkg-config dependency generation fixes.
---
CMakeLists.txt | 25 ++++++++++++++++---------
src/CMakeLists.txt | 9 ++-------
src/libglfw.pc.cmake | 2 +-
3 files changed, 19 insertions(+), 17 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f5b08c1e8..5aa640b7e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -55,15 +55,7 @@ if (UNIX AND NOT APPLE)
list(APPEND GLFW_INCLUDE_DIR ${X11_X11_INCLUDE_PATH} ${OPENGL_INCLUDE_DIR})
list(APPEND GLFW_LIBRARIES ${X11_X11_LIB} ${OPENGL_gl_LIBRARY})
- find_library(MATH_LIBRARY m)
- if (MATH_LIBRARY)
- list(APPEND GLFW_LIBRARIES ${MATH_LIBRARY})
- endif()
-
- find_library(RT_LIBRARY rt)
- if (RT_LIBRARY)
- list(APPEND GLFW_LIBRARIES ${RT_LIBRARY})
- endif()
+ set(GLFW_PKGLIBS "gl x11")
include(CheckFunctionExists)
include(CheckSymbolExists)
@@ -76,6 +68,7 @@ if (UNIX AND NOT APPLE)
set(_GLFW_HAS_XRANDR 1)
list(APPEND GLFW_INCLUDE_DIR ${X11_Xrandr_INCLUDE_PATH})
list(APPEND GLFW_LIBRARIES ${X11_Xrandr_LIB})
+ set(GLFW_PKGLIBS "${GLFW_PKGLIBS} xrandr")
endif()
# Check for Xf86VidMode (fallback legacy resolution switching extension)
@@ -90,6 +83,8 @@ if (UNIX AND NOT APPLE)
else()
list(APPEND GLFW_LIBRARIES Xxf86vm)
endif()
+
+ set(GLFW_PKGLIBS "${GLFW_PKGLIBS} xxf86vm")
endif()
# Check for Xkb (X keyboard extension)
@@ -98,6 +93,18 @@ if (UNIX AND NOT APPLE)
list(APPEND GLFW_INCLUDE_DIR ${X11_Xkb_INCLUDE_PATH})
endif()
+ find_library(RT_LIBRARY rt)
+ if (RT_LIBRARY)
+ list(APPEND GLFW_LIBRARIES ${RT_LIBRARY})
+ set(GLFW_PKGLIBS "${GLFW_PKGLIBS} rt")
+ endif()
+
+ find_library(MATH_LIBRARY m)
+ if (MATH_LIBRARY)
+ list(APPEND GLFW_LIBRARIES ${MATH_LIBRARY})
+ set(GLFW_PKGLIBS "${GLFW_PKGLIBS} m")
+ endif()
+
check_function_exists(glXGetProcAddress _GLFW_HAS_GLXGETPROCADDRESS)
if (NOT _GLFW_HAS_GLXGETPROCADDRESS)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index e508f2597..aa7fbf304 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,14 +1,9 @@
if (UNIX)
- if (_GLFW_HAS_XRANDR)
- set(GLFW_PKGLIBS "${GLFW_PKGLIBS} xrandr")
- endif()
- if (_GLFW_HAS_XF86VIDMODE)
- set(GLFW_PKGLIBS "${GLFW_PKGLIBS} xxf86vm")
- endif()
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libglfw.pc.cmake
${CMAKE_CURRENT_BINARY_DIR}/libglfw.pc @ONLY)
- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libglfw.pc DESTINATION lib/pkgconfig)
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libglfw.pc
+ DESTINATION lib/pkgconfig)
endif()
include_directories(${GLFW_SOURCE_DIR}/src
diff --git a/src/libglfw.pc.cmake b/src/libglfw.pc.cmake
index 47cfb4f5d..164fdc261 100644
--- a/src/libglfw.pc.cmake
+++ b/src/libglfw.pc.cmake
@@ -7,6 +7,6 @@ Name: GLFW
Description: A portable library for OpenGL, window and input
Version: 3.0.0
URL: http://www.glfw.org/
-Requires.private: gl x11 @GLFW_PKGLIBS@
+Requires.private: @GLFW_PKGLIBS@
Libs: -L${libdir} -lglfw
Cflags: -I${includedir}
From 441452467a7127affa5957cdb24e184963b001c6 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 15:05:48 +0200
Subject: [PATCH 50/62] Marked library variables as advanced.
---
CMakeLists.txt | 2 ++
1 file changed, 2 insertions(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5aa640b7e..d1034aad2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -94,12 +94,14 @@ if (UNIX AND NOT APPLE)
endif()
find_library(RT_LIBRARY rt)
+ mark_as_advanced(RT_LIBRARY)
if (RT_LIBRARY)
list(APPEND GLFW_LIBRARIES ${RT_LIBRARY})
set(GLFW_PKGLIBS "${GLFW_PKGLIBS} rt")
endif()
find_library(MATH_LIBRARY m)
+ mark_as_advanced(MATH_LIBRARY)
if (MATH_LIBRARY)
list(APPEND GLFW_LIBRARIES ${MATH_LIBRARY})
set(GLFW_PKGLIBS "${GLFW_PKGLIBS} m")
From 20e685d37bbfc5c377b085148fb2d66c8cd92abe Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 16:34:36 +0200
Subject: [PATCH 51/62] Formatted variables not used outside of the local CMake
project.
---
CMakeLists.txt | 30 +++++++++++++++---------------
src/CMakeLists.txt | 39 ++++++++++++++++++++-------------------
2 files changed, 35 insertions(+), 34 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d1034aad2..e7149dd66 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -32,11 +32,11 @@ if (WIN32)
set(_GLFW_WIN32_WGL 1)
# Set up library and include paths
- list(APPEND GLFW_INCLUDE_DIR ${OPENGL_INCLUDE_DIR})
- list(APPEND GLFW_LIBRARIES ${OPENGL_gl_LIBRARY})
+ list(APPEND glfw_INCLUDE_DIRS ${OPENGL_INCLUDE_DIR})
+ list(APPEND glfw_LIBRARIES ${OPENGL_gl_LIBRARY})
if (BUILD_SHARED_LIBS)
- list(APPEND GLFW_LIBRARIES winmm)
+ list(APPEND glfw_LIBRARIES winmm)
endif()
endif()
@@ -52,8 +52,8 @@ if (UNIX AND NOT APPLE)
find_package(X11 REQUIRED)
# Set up library and include paths
- list(APPEND GLFW_INCLUDE_DIR ${X11_X11_INCLUDE_PATH} ${OPENGL_INCLUDE_DIR})
- list(APPEND GLFW_LIBRARIES ${X11_X11_LIB} ${OPENGL_gl_LIBRARY})
+ list(APPEND glfw_INCLUDE_DIRS ${X11_X11_INCLUDE_PATH} ${OPENGL_INCLUDE_DIR})
+ list(APPEND glfw_LIBRARIES ${X11_X11_LIB} ${OPENGL_gl_LIBRARY})
set(GLFW_PKGLIBS "gl x11")
@@ -61,27 +61,27 @@ if (UNIX AND NOT APPLE)
include(CheckSymbolExists)
# This is needed by the GLX function checks below
- set(CMAKE_REQUIRED_LIBRARIES ${GLFW_LIBRARIES})
+ set(CMAKE_REQUIRED_LIBRARIES ${glfw_LIBRARIES})
# Check for XRandR (modern resolution switching extension)
if (X11_Xrandr_FOUND)
set(_GLFW_HAS_XRANDR 1)
- list(APPEND GLFW_INCLUDE_DIR ${X11_Xrandr_INCLUDE_PATH})
- list(APPEND GLFW_LIBRARIES ${X11_Xrandr_LIB})
+ list(APPEND glfw_INCLUDE_DIRS ${X11_Xrandr_INCLUDE_PATH})
+ list(APPEND glfw_LIBRARIES ${X11_Xrandr_LIB})
set(GLFW_PKGLIBS "${GLFW_PKGLIBS} xrandr")
endif()
# Check for Xf86VidMode (fallback legacy resolution switching extension)
if (X11_xf86vmode_FOUND)
set(_GLFW_HAS_XF86VIDMODE 1)
- list(APPEND GLFW_INCLUDE_DIR ${X11_xf86vmode_INCLUDE_PATH})
+ list(APPEND glfw_INCLUDE_DIRS ${X11_xf86vmode_INCLUDE_PATH})
# NOTE: This is a workaround for CMake bug 0006976 (missing
# X11_xf86vmode_LIB variable)
if (X11_xf86vmode_LIB)
- list(APPEND GLFW_LIBRARIES ${X11_xf86vmode_LIB})
+ list(APPEND glfw_LIBRARIES ${X11_xf86vmode_LIB})
else()
- list(APPEND GLFW_LIBRARIES Xxf86vm)
+ list(APPEND glfw_LIBRARIES Xxf86vm)
endif()
set(GLFW_PKGLIBS "${GLFW_PKGLIBS} xxf86vm")
@@ -90,20 +90,20 @@ if (UNIX AND NOT APPLE)
# Check for Xkb (X keyboard extension)
if (X11_Xkb_FOUND)
set(_GLFW_HAS_XKB 1)
- list(APPEND GLFW_INCLUDE_DIR ${X11_Xkb_INCLUDE_PATH})
+ list(APPEND glfw_INCLUDE_DIR ${X11_Xkb_INCLUDE_PATH})
endif()
find_library(RT_LIBRARY rt)
mark_as_advanced(RT_LIBRARY)
if (RT_LIBRARY)
- list(APPEND GLFW_LIBRARIES ${RT_LIBRARY})
+ list(APPEND glfw_LIBRARIES ${RT_LIBRARY})
set(GLFW_PKGLIBS "${GLFW_PKGLIBS} rt")
endif()
find_library(MATH_LIBRARY m)
mark_as_advanced(MATH_LIBRARY)
if (MATH_LIBRARY)
- list(APPEND GLFW_LIBRARIES ${MATH_LIBRARY})
+ list(APPEND glfw_LIBRARIES ${MATH_LIBRARY})
set(GLFW_PKGLIBS "${GLFW_PKGLIBS} m")
endif()
@@ -153,7 +153,7 @@ if (UNIX AND APPLE)
find_library(COCOA_FRAMEWORK Cocoa)
find_library(IOKIT_FRAMEWORK IOKit)
find_library(CORE_FOUNDATION_FRAMEWORK CoreFoundation)
- list(APPEND GLFW_LIBRARIES ${COCOA_FRAMEWORK}
+ list(APPEND glfw_LIBRARIES ${COCOA_FRAMEWORK}
${OPENGL_gl_LIBRARY}
${IOKIT_FRAMEWORK}
${CORE_FOUNDATION_FRAMEWORK})
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index aa7fbf304..3f692cf8e 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -8,33 +8,33 @@ endif()
include_directories(${GLFW_SOURCE_DIR}/src
${GLFW_BINARY_DIR}/src
- ${GLFW_INCLUDE_DIR})
+ ${glfw_INCLUDE_DIRS})
set(common_SOURCES error.c fullscreen.c gamma.c init.c input.c
joystick.c opengl.c time.c window.c)
if (_GLFW_COCOA_NSGL)
- set(libglfw_SOURCES ${common_SOURCES} cocoa_fullscreen.m cocoa_gamma.c
- cocoa_init.m cocoa_input.m cocoa_joystick.m
- cocoa_opengl.m cocoa_time.c cocoa_window.m)
+ set(glfw_SOURCES ${common_SOURCES} cocoa_fullscreen.m cocoa_gamma.c
+ cocoa_init.m cocoa_input.m cocoa_joystick.m
+ cocoa_opengl.m cocoa_time.c cocoa_window.m)
# For some reason, CMake doesn't know about .m
- set_source_files_properties(${libglfw_SOURCES} PROPERTIES LANGUAGE C)
+ set_source_files_properties(${glfw_SOURCES} PROPERTIES LANGUAGE C)
elseif (_GLFW_WIN32_WGL)
- set(libglfw_SOURCES ${common_SOURCES} win32_fullscreen.c win32_gamma.c
- win32_init.c win32_input.c win32_joystick.c
- win32_opengl.c win32_time.c win32_window.c
- win32_dllmain.c)
+ set(glfw_SOURCES ${common_SOURCES} win32_fullscreen.c win32_gamma.c
+ win32_init.c win32_input.c win32_joystick.c
+ win32_opengl.c win32_time.c win32_window.c
+ win32_dllmain.c)
elseif (_GLFW_X11_GLX)
- set(libglfw_SOURCES ${common_SOURCES} x11_fullscreen.c x11_gamma.c
- x11_init.c x11_input.c x11_joystick.c
- x11_keysym2unicode.c x11_opengl.c x11_time.c
- x11_window.c)
+ set(glfw_SOURCES ${common_SOURCES} x11_fullscreen.c x11_gamma.c
+ x11_init.c x11_input.c x11_joystick.c
+ x11_keysym2unicode.c x11_opengl.c x11_time.c
+ x11_window.c)
else()
message(FATAL_ERROR "No supported platform was selected")
endif()
-add_library(glfw ${libglfw_SOURCES})
+add_library(glfw ${glfw_SOURCES})
if (BUILD_SHARED_LIBS)
@@ -49,14 +49,15 @@ if (BUILD_SHARED_LIBS)
if (APPLE)
# Append -fno-common to the compile flags to work around a bug in the Apple GCC
- get_target_property(CFLAGS glfw COMPILE_FLAGS)
- if (NOT CFLAGS)
- set(CFLAGS "")
+ get_target_property(glfw_CFLAGS glfw COMPILE_FLAGS)
+ if (NOT glfw_CFLAGS)
+ set(glfw_CFLAGS "")
endif()
- set_target_properties(glfw PROPERTIES COMPILE_FLAGS "${CFLAGS} -fno-common")
+ set_target_properties(glfw PROPERTIES
+ COMPILE_FLAGS "${glfw_CFLAGS} -fno-common")
endif()
- target_link_libraries(glfw ${GLFW_LIBRARIES})
+ target_link_libraries(glfw ${glfw_LIBRARIES})
target_link_libraries(glfw LINK_INTERFACE_LIBRARIES)
endif()
From bd8eb1399a051ce09b07ce34f76f2e12889849bc Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 16:51:24 +0200
Subject: [PATCH 52/62] Put platform detection in a single place.
---
CMakeLists.txt | 32 ++++++++++++++++++--------------
src/CMakeLists.txt | 11 +++--------
2 files changed, 21 insertions(+), 22 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index e7149dd66..ef6ded3dc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -23,13 +23,25 @@ if (CMAKE_COMPILER_IS_GNUCC)
endif()
#--------------------------------------------------------------------
-# Set up GLFW for Win32 and WGL on Windows
+# Detect and select target platform
#--------------------------------------------------------------------
if (WIN32)
- message(STATUS "Building GLFW for WGL on a Win32 system")
-
- # Define the platform identifier
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 X11 and GLX on a Unix-like system")
+elseif (UNIX AND NOT APPLE)
+ set(_GLFW_X11_GLX 1)
+ message(STATUS "Building GLFW for Cocoa and NSOpenGL on Mac OS X")
+else()
+ message(FATAL_ERROR "No supported platform was detected")
+endif()
+
+#--------------------------------------------------------------------
+# Set up GLFW for Win32 and WGL on Windows
+#--------------------------------------------------------------------
+if (_GLFW_WIN32_WGL)
# Set up library and include paths
list(APPEND glfw_INCLUDE_DIRS ${OPENGL_INCLUDE_DIR})
@@ -43,11 +55,7 @@ endif()
#--------------------------------------------------------------------
# Set up GLFW for Xlib and GLX on Unix-like systems with X Windows
#--------------------------------------------------------------------
-if (UNIX AND NOT APPLE)
- message(STATUS "Building GLFW for X11 and GLX on a Unix-like system")
-
- # Define the platform identifier
- set(_GLFW_X11_GLX 1)
+if (_GLFW_X11_GLX)
find_package(X11 REQUIRED)
@@ -131,12 +139,8 @@ endif()
#--------------------------------------------------------------------
# Set up GLFW for Cocoa and NSOpenGL on Mac OS X
#--------------------------------------------------------------------
-if (UNIX AND APPLE)
- message(STATUS "Building GLFW for Cocoa and NSOpenGL on Mac OS X")
+if (_GLFW_COCOA_NSGL)
- # Define the platform identifier
- set(_GLFW_COCOA_NSGL 1)
-
option(GLFW_BUILD_UNIVERSAL "Build GLFW as a Universal Binary" OFF)
# Universal build
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 3f692cf8e..b8c0fd7d6 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,5 +1,5 @@
-if (UNIX)
+if (_GLFW_X11_GLX)
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/libglfw.pc.cmake
${CMAKE_CURRENT_BINARY_DIR}/libglfw.pc @ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libglfw.pc
@@ -30,24 +30,20 @@ elseif (_GLFW_X11_GLX)
x11_init.c x11_input.c x11_joystick.c
x11_keysym2unicode.c x11_opengl.c x11_time.c
x11_window.c)
-else()
- message(FATAL_ERROR "No supported platform was selected")
endif()
add_library(glfw ${glfw_SOURCES})
if (BUILD_SHARED_LIBS)
- if (WIN32)
+ if (_GLFW_WIN32_WGL)
# The GLFW DLL needs a special compile-time macro and import library name
set_target_properties(glfw PROPERTIES
COMPILE_DEFINITIONS "GLFW_BUILD_DLL;_GLFW_NO_DLOAD_GDI32;_GLFW_NO_DLOAD_WINMM"
PREFIX ""
IMPORT_PREFIX ""
IMPORT_SUFFIX "dll.lib")
- endif()
-
- if (APPLE)
+ elseif (_GLFW_COCOA_NSGL)
# Append -fno-common to the compile flags to work around a bug in the Apple GCC
get_target_property(glfw_CFLAGS glfw COMPILE_FLAGS)
if (NOT glfw_CFLAGS)
@@ -59,7 +55,6 @@ if (BUILD_SHARED_LIBS)
target_link_libraries(glfw ${glfw_LIBRARIES})
target_link_libraries(glfw LINK_INTERFACE_LIBRARIES)
-
endif()
install(TARGETS glfw DESTINATION lib)
From 1eb24ff261c815d2db102b78c74706defb892799 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 17:05:00 +0200
Subject: [PATCH 53/62] Executable dependency list fixes.
---
examples/CMakeLists.txt | 3 ++-
tests/CMakeLists.txt | 3 ++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt
index 2bdd95e9a..76135a920 100644
--- a/examples/CMakeLists.txt
+++ b/examples/CMakeLists.txt
@@ -3,8 +3,9 @@ link_libraries(glfw ${OPENGL_glu_LIBRARY})
if (BUILD_SHARED_LIBS)
add_definitions(-DGLFW_DLL)
+ link_libraries(${OPENGL_gl_LIBRARY})
else()
- link_libraries(${GLFW_LIBRARIES})
+ link_libraries(${glfw_LIBRARIES})
endif()
include_directories(${GLFW_SOURCE_DIR}/include
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index f6749e543..d016fb0e2 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -3,8 +3,9 @@ link_libraries(glfw ${OPENGL_glu_LIBRARY})
if (BUILD_SHARED_LIBS)
add_definitions(-DGLFW_DLL)
+ link_libraries(${OPENGL_gl_LIBRARY})
else()
- link_libraries(${GLFW_LIBRARIES})
+ link_libraries(${glfw_LIBRARIES})
endif()
include_directories(${GLFW_SOURCE_DIR}/include
From 862efe78e3535d8a1cad2084828ca91e410c60ac Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 17:22:35 +0200
Subject: [PATCH 54/62] Added fallback check for dlopen, clearer use of
required libraries.
---
CMakeLists.txt | 25 ++++++++++++++++++++++---
1 file changed, 22 insertions(+), 3 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index ef6ded3dc..d17f72ed8 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -68,9 +68,6 @@ if (_GLFW_X11_GLX)
include(CheckFunctionExists)
include(CheckSymbolExists)
- # This is needed by the GLX function checks below
- set(CMAKE_REQUIRED_LIBRARIES ${glfw_LIBRARIES})
-
# Check for XRandR (modern resolution switching extension)
if (X11_Xrandr_FOUND)
set(_GLFW_HAS_XRANDR 1)
@@ -115,6 +112,8 @@ if (_GLFW_X11_GLX)
set(GLFW_PKGLIBS "${GLFW_PKGLIBS} m")
endif()
+ set(CMAKE_REQUIRED_LIBRARIES ${OPENGL_gl_LIBRARY})
+
check_function_exists(glXGetProcAddress _GLFW_HAS_GLXGETPROCADDRESS)
if (NOT _GLFW_HAS_GLXGETPROCADDRESS)
@@ -129,6 +128,26 @@ if (_GLFW_X11_GLX)
NOT _GLFW_HAS_GLXGETPROCADDRESSARB AND
NOT _GLFW_HAS_GLXGETPROCADDRESSEXT)
message(WARNING "No glXGetProcAddressXXX variant found")
+
+ # Check for dlopen support as a fallback
+
+ find_library(DL_LIBRARY dl)
+ if (DL_LIBRARY)
+ set(CMAKE_REQUIRED_LIBRARIES ${DL_LIBRARY})
+ else()
+ set(CMAKE_REQUIRED_LIBRARIES "")
+ endif()
+
+ check_function_exists(dlopen _GLFW_HAS_DLOPEN)
+
+ 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_PKGLIBS "${GLFW_PKGLIBS} dl")
+ endif()
endif()
if (${CMAKE_SYSTEM_NAME} STREQUAL "Linux")
From cfa798451e71b61504208de22434d1c51961961e Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 17:23:24 +0200
Subject: [PATCH 55/62] Fixed platform messages being mixed up.
---
CMakeLists.txt | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d17f72ed8..8101242bc 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -30,10 +30,10 @@ if (WIN32)
message(STATUS "Building GLFW for WGL on a Win32 system")
elseif (UNIX AND APPLE)
set(_GLFW_COCOA_NSGL 1)
- message(STATUS "Building GLFW for X11 and GLX on a Unix-like system")
+ message(STATUS "Building GLFW for Cocoa and NSOpenGL on Mac OS X")
elseif (UNIX AND NOT APPLE)
set(_GLFW_X11_GLX 1)
- message(STATUS "Building GLFW for Cocoa and NSOpenGL on Mac OS X")
+ message(STATUS "Building GLFW for X11 and GLX on a Unix-like system")
else()
message(FATAL_ERROR "No supported platform was detected")
endif()
From 730e2e55c9a10b90c7728f44a9744873fd1ab36f Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 17:24:33 +0200
Subject: [PATCH 56/62] Removed unused module.
---
CMakeLists.txt | 1 -
1 file changed, 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8101242bc..4ea202eaf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -66,7 +66,6 @@ if (_GLFW_X11_GLX)
set(GLFW_PKGLIBS "gl x11")
include(CheckFunctionExists)
- include(CheckSymbolExists)
# Check for XRandR (modern resolution switching extension)
if (X11_Xrandr_FOUND)
From 8dc139183543040e87e0ac73ace61702ff4789ba Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 17:25:03 +0200
Subject: [PATCH 57/62] Marked library variable as advanced.
---
CMakeLists.txt | 1 +
1 file changed, 1 insertion(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 4ea202eaf..c3e411684 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -131,6 +131,7 @@ if (_GLFW_X11_GLX)
# 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()
From c097246312820cb64c44d3742f4647b14c94b404 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 17:31:22 +0200
Subject: [PATCH 58/62] Fixed listing of non-pkg-config libraries.
---
CMakeLists.txt | 13 +++++++------
src/libglfw.pc.cmake | 5 +++--
2 files changed, 10 insertions(+), 8 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c3e411684..07790a12b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -63,7 +63,8 @@ if (_GLFW_X11_GLX)
list(APPEND glfw_INCLUDE_DIRS ${X11_X11_INCLUDE_PATH} ${OPENGL_INCLUDE_DIR})
list(APPEND glfw_LIBRARIES ${X11_X11_LIB} ${OPENGL_gl_LIBRARY})
- set(GLFW_PKGLIBS "gl x11")
+ set(GLFW_PKG_DEPS "gl x11")
+ set(GLFW_PKG_LIBS "")
include(CheckFunctionExists)
@@ -72,7 +73,7 @@ if (_GLFW_X11_GLX)
set(_GLFW_HAS_XRANDR 1)
list(APPEND glfw_INCLUDE_DIRS ${X11_Xrandr_INCLUDE_PATH})
list(APPEND glfw_LIBRARIES ${X11_Xrandr_LIB})
- set(GLFW_PKGLIBS "${GLFW_PKGLIBS} xrandr")
+ set(GLFW_PKG_DEPS "${GLFW_PKG_DEPS} xrandr")
endif()
# Check for Xf86VidMode (fallback legacy resolution switching extension)
@@ -88,7 +89,7 @@ if (_GLFW_X11_GLX)
list(APPEND glfw_LIBRARIES Xxf86vm)
endif()
- set(GLFW_PKGLIBS "${GLFW_PKGLIBS} xxf86vm")
+ set(GLFW_PKG_DEPS "${GLFW_PKG_DEPS} xxf86vm")
endif()
# Check for Xkb (X keyboard extension)
@@ -101,14 +102,14 @@ if (_GLFW_X11_GLX)
mark_as_advanced(RT_LIBRARY)
if (RT_LIBRARY)
list(APPEND glfw_LIBRARIES ${RT_LIBRARY})
- set(GLFW_PKGLIBS "${GLFW_PKGLIBS} rt")
+ set(GLFW_PKG_LIBS "${GLFW_PKG_LIBS} -lrt")
endif()
find_library(MATH_LIBRARY m)
mark_as_advanced(MATH_LIBRARY)
if (MATH_LIBRARY)
list(APPEND glfw_LIBRARIES ${MATH_LIBRARY})
- set(GLFW_PKGLIBS "${GLFW_PKGLIBS} m")
+ set(GLFW_PKG_LIBS "${GLFW_PKG_LIBS} -lm")
endif()
set(CMAKE_REQUIRED_LIBRARIES ${OPENGL_gl_LIBRARY})
@@ -146,7 +147,7 @@ if (_GLFW_X11_GLX)
if (DL_LIBRARY)
list(APPEND glfw_LIBRARIES ${DL_LIBRARY})
- set(GLFW_PKGLIBS "${GLFW_PKGLIBS} dl")
+ set(GLFW_PKG_LIBS "${GLFW_PKG_LIBS} -ldl")
endif()
endif()
diff --git a/src/libglfw.pc.cmake b/src/libglfw.pc.cmake
index 164fdc261..f83ad1265 100644
--- a/src/libglfw.pc.cmake
+++ b/src/libglfw.pc.cmake
@@ -7,6 +7,7 @@ Name: GLFW
Description: A portable library for OpenGL, window and input
Version: 3.0.0
URL: http://www.glfw.org/
-Requires.private: @GLFW_PKGLIBS@
-Libs: -L${libdir} -lglfw
+Requires.private: @GLFW_PKG_DEPS@
+Libs: -L${libdir} -lglfw
+Libs.private: @GLFW_PKG_LIBS@
Cflags: -I${includedir}
From 2588c9be1739d62d7b27bf11e278d1a6063d40e3 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 17:40:30 +0200
Subject: [PATCH 59/62] Renamed GLFW_BUILD_DLL to _GLFW_BUILD_DLL.
---
include/GL/glfw3.h | 2 +-
readme.html | 1 +
src/CMakeLists.txt | 2 +-
src/win32_dllmain.c | 4 ++--
src/win32_init.c | 2 +-
5 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/include/GL/glfw3.h b/include/GL/glfw3.h
index 44e26b62e..180fca807 100644
--- a/include/GL/glfw3.h
+++ b/include/GL/glfw3.h
@@ -119,7 +119,7 @@ extern "C" {
/* ---------------- GLFW related system specific defines ----------------- */
-#if defined(_WIN32) && defined(GLFW_BUILD_DLL)
+#if defined(_WIN32) && defined(_GLFW_BUILD_DLL)
/* We are building a Win32 DLL */
#define GLFWAPI __declspec(dllexport)
diff --git a/readme.html b/readme.html
index 84cc2a665..f631acd7e 100644
--- a/readme.html
+++ b/readme.html
@@ -288,6 +288,7 @@ version of GLFW.
- Renamed
glfw.h to glfw3.h to avoid conflicts with 2.x series
- Renamed
GLFW_WINDOW token to GLFW_WINDOWED
- Renamed
GLFW_WINDOW_NO_RESIZE to GLFW_WINDOW_RESIZABLE
+ - Renamed
GLFW_BUILD_DLL to _GLFW_BUILD_DLL
- Renamed
version test to glfwinfo
- Replaced ad hoc build system with CMake
- Replaced layout-dependent key codes with single, platform-independent set based on US layout
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index b8c0fd7d6..b87ac3b12 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -39,7 +39,7 @@ if (BUILD_SHARED_LIBS)
if (_GLFW_WIN32_WGL)
# The GLFW DLL needs a special compile-time macro and import library name
set_target_properties(glfw PROPERTIES
- COMPILE_DEFINITIONS "GLFW_BUILD_DLL;_GLFW_NO_DLOAD_GDI32;_GLFW_NO_DLOAD_WINMM"
+ COMPILE_DEFINITIONS "_GLFW_BUILD_DLL;_GLFW_NO_DLOAD_GDI32;_GLFW_NO_DLOAD_WINMM"
PREFIX ""
IMPORT_PREFIX ""
IMPORT_SUFFIX "dll.lib")
diff --git a/src/win32_dllmain.c b/src/win32_dllmain.c
index a999af0e3..95258ccc7 100644
--- a/src/win32_dllmain.c
+++ b/src/win32_dllmain.c
@@ -31,7 +31,7 @@
#include "internal.h"
-#if defined(GLFW_BUILD_DLL)
+#if defined(_GLFW_BUILD_DLL)
//========================================================================
// GLFW DLL entry point
@@ -45,5 +45,5 @@ BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, LPVOID reserved)
return TRUE;
}
-#endif // GLFW_BUILD_DLL
+#endif // _GLFW_BUILD_DLL
diff --git a/src/win32_init.c b/src/win32_init.c
index 4fab9b747..55232fd71 100644
--- a/src/win32_init.c
+++ b/src/win32_init.c
@@ -271,7 +271,7 @@ const char* _glfwPlatformGetVersionString(void)
#else
" (unknown compiler)"
#endif
-#if defined(GLFW_BUILD_DLL)
+#if defined(_GLFW_BUILD_DLL)
" DLL"
#endif
#if !defined(_GLFW_NO_DLOAD_GDI32)
From cc5d7cda64643b900c93502927837d09b35c13b3 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 17:43:02 +0200
Subject: [PATCH 60/62] Added configuration error check.
---
include/GL/glfw3.h | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/include/GL/glfw3.h b/include/GL/glfw3.h
index 180fca807..b29d0005a 100644
--- a/include/GL/glfw3.h
+++ b/include/GL/glfw3.h
@@ -119,6 +119,10 @@ extern "C" {
/* ---------------- GLFW related system specific defines ----------------- */
+#if defined(GLFW_DLL) && defined(_GLFW_BUILD_DLL)
+ #error "You must not have both GLFW_DLL and _GLFW_BUILD_DLL defined"
+#endif
+
#if defined(_WIN32) && defined(_GLFW_BUILD_DLL)
/* We are building a Win32 DLL */
From 415ebbb97cfb9487b8682cf704cd7a07481a2420 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 20:15:27 +0200
Subject: [PATCH 61/62] Added cache variable for dependencies of GLFW.
---
CMakeLists.txt | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 07790a12b..522aaf76b 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -183,6 +183,11 @@ if (_GLFW_COCOA_NSGL)
${CORE_FOUNDATION_FRAMEWORK})
endif()
+#--------------------------------------------------------------------
+# Export GLFW library dependencies
+#--------------------------------------------------------------------
+set(GLFW_LIBRARIES ${glfw_LIBRARIES} CACHE STRING "Dependencies of GLFW")
+
#--------------------------------------------------------------------
# Add subdirectories
#--------------------------------------------------------------------
From 7fb702a22be00f26de75483185d39a01aa44abc6 Mon Sep 17 00:00:00 2001
From: Camilla Berglund
Date: Sun, 25 Mar 2012 20:45:06 +0200
Subject: [PATCH 62/62] Removed unused code.
---
src/win32_window.c | 46 +---------------------------------------------
1 file changed, 1 insertion(+), 45 deletions(-)
diff --git a/src/win32_window.c b/src/win32_window.c
index 0f3c67d00..dd25c3ce4 100644
--- a/src/win32_window.c
+++ b/src/win32_window.c
@@ -34,30 +34,6 @@
#include
-//========================================================================
-// Convert BPP to RGB bits based on "best guess"
-//========================================================================
-
-static void bpp2rgb(int bpp, int* r, int* g, int* b)
-{
- int delta;
-
- // We assume that by 32 they really meant 24
- if (bpp == 32)
- bpp = 24;
-
- // Convert "bits per pixel" to red, green & blue sizes
-
- *r = *g = *b = bpp / 3;
- delta = bpp - (*r * 3);
- if (delta >= 1)
- *g = *g + 1;
-
- if (delta == 2)
- *r = *r + 1;
-}
-
-
//========================================================================
// Enable/disable minimize/restore animations
//========================================================================
@@ -1600,29 +1576,10 @@ void _glfwPlatformSetWindowTitle(_GLFWwindow* window, const char* title)
void _glfwPlatformSetWindowSize(_GLFWwindow* window, int width, int height)
{
- //int bpp, refresh;
- int newMode = 0;
GLboolean sizeChanged = GL_FALSE;
if (window->mode == GLFW_FULLSCREEN)
{
- // Get some info about the current mode
-
- DEVMODE dm;
-
- dm.dmSize = sizeof(DEVMODE);
- //if (EnumDisplaySettings(NULL, window->Win32.modeID, &dm))
- //{
- // We need to keep BPP the same for the OpenGL context to keep working
- //bpp = dm.dmBitsPerPel;
-
- // Get closest match for target video mode
- //refresh = window->Win32.desiredRefreshRate;
- //newMode = _glfwGetClosestVideoModeBPP(&width, &height, &bpp, &refresh);
- //}
- //else
- //newMode = window->Win32.modeID;
-
if (width > window->width || height > window->height)
{
// The new video mode is larger than the current one, so we resize
@@ -1634,8 +1591,7 @@ void _glfwPlatformSetWindowSize(_GLFWwindow* window, int width, int height)
sizeChanged = GL_TRUE;
}
- //if (newMode != window->Win32.modeID)
- //_glfwSetVideoModeMODE(newMode);
+ // TODO: Change video mode
}
else
{