diff --git a/CMakeLists.txt b/CMakeLists.txt index 4e7983cb..7c9b2c2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -4,7 +4,7 @@ cmake_minimum_required(VERSION 2.8) set(GLFW_VERSION_MAJOR "3") set(GLFW_VERSION_MINOR "0") -set(GLFW_VERSION_PATCH "2") +set(GLFW_VERSION_PATCH "3") set(GLFW_VERSION_EXTRA "") set(GLFW_VERSION "${GLFW_VERSION_MAJOR}.${GLFW_VERSION_MINOR}") set(GLFW_VERSION_FULL "${GLFW_VERSION}.${GLFW_VERSION_PATCH}${GLFW_VERSION_EXTRA}") @@ -163,6 +163,13 @@ if (_GLFW_WIN32) if (GLFW_USE_OPTIMUS_HPG) set(_GLFW_USE_OPTIMUS_HPG 1) endif() + + # HACK: When building on MinGW, WINVER and UNICODE need to be defined before + # the inclusion of stddef.h (by glfw3.h), which is itself included before + # win32_platform.h. We define them here until a saner solution can be found + # NOTE: MinGW-w64 and Visual C++ do /not/ need this hack. + add_definitions(-DUNICODE) + add_definitions(-DWINVER=0x0501) endif() #-------------------------------------------------------------------- @@ -204,7 +211,13 @@ if (_GLFW_X11) endif() list(APPEND glfw_INCLUDE_DIRS ${X11_Xinput_INCLUDE_PATH}) - list(APPEND glfw_LIBRARIES ${X11_Xinput_LIB}) + + if (X11_Xinput_LIB) + list(APPEND glfw_LIBRARIES ${X11_Xinput_LIB}) + else() + # Backwards compatibility (bug in CMake 2.8.7) + list(APPEND glfw_LIBRARIES Xi) + endif() set(GLFW_PKG_DEPS "${GLFW_PKG_DEPS} xi") # Check for Xf86VidMode (fallback gamma control) diff --git a/README.md b/README.md index 711b9cda..f0f7c541 100644 --- a/README.md +++ b/README.md @@ -6,8 +6,9 @@ GLFW is a free, Open Source, portable library for OpenGL and OpenGL ES application development. It provides a simple, platform-independent API for creating windows and contexts, reading input, handling events, etc. -Version 3.0.2 is *not yet described*. As this is a patch release, there are no -API changes. +Version 3.0.3 adds fixes for a number of bugs that together affect all supported +platforms, most notably MinGW compilation issues and cursor mode issues on OS X. +As this is a patch release, there are no API changes. If you are new to GLFW, you may find the [introductory tutorial](http://www.glfw.org/docs/latest/quick.html) for GLFW @@ -167,11 +168,15 @@ directory of bundled applications to the `Contents/Resources` directory. #### Windows specific options `USE_MSVC_RUNTIME_LIBRARY_DLL` determines whether to use the DLL version or the -static library version of the Visual C++ runtime library. +static library version of the Visual C++ runtime library. If set to `ON`, the +DLL version of the Visual C++ library is used. It is recommended to set this to +`ON`, as this keeps the executable smaller and benefits from security and bug +fix updates of the Visual C++ runtime. `GLFW_USE_DWM_SWAP_INTERVAL` determines whether the swap interval is set even -when DWM compositing is enabled. This can lead to severe jitter and is not -usually recommended. +when DWM compositing is enabled. If this is `ON`, the swap interval is set even +if DWM is enabled. It is recommended to set this to `OFF`, as doing otherwise +can lead to severe jitter. `GLFW_USE_OPTIMUS_HPG` determines whether to export the `NvOptimusEnablement` symbol, which forces the use of the high-performance GPU on nVidia Optimus @@ -204,31 +209,13 @@ See the [GLFW documentation](http://www.glfw.org/docs/latest/). ## Changelog - - Bugfix: The `-Wall` flag was not used with Clang and other GCC compatibles - - Bugfix: The default for `GLFW_ALPHA_BITS` was set to zero - - [Win32] Added `_GLFW_USE_DWM_SWAP_INTERVAL` for forcing the swap interval - to be set even when DWM compositing is enabled - - [Win32] Added support for forcing the use of the high-performance GPU - on nVidia Optimus systems - - [Win32] Bugfix: The clipboard string was not freed on terminate - - [Win32] Bugfix: Entry points for OpenGL 1.0 and 1.1 functions were not - returned by `glfwGetProcAddress` - - [Win32] Bugfix: The `user32` and `dwmapi` module handles were not freed on - library termination - - [Cocoa] Added support for precise scrolling deltas on OS X 10.7 and later - - [Cocoa] Enabled explicit creation of OpenGL 3.x and 4.x contexts as supported - by OS X 10.9 - - [Cocoa] Bugfix: The clipboard string was not freed on terminate - - [Cocoa] Bugfix: Selectors were used that are not declared by the 10.6 SDK - - [Cocoa] Bugfix: The position set by `glfwSetWindowPos` was incorrect - - [X11] Bugfix: Override-redirect windows were resized to the desired instead - of the actual resolution of the selected video mode - - [X11] Bugfix: Screensaver override for full screen windows had a possible - race condition - - [X11] Bugfix: The reported window position did not account for the size of - the window frame on some WMs - - [X11] Bugfix: The original video mode of a monitor was overwritten by calls - to `glfwSetWindowSize` + - [Win32] Bugfix: `_WIN32_WINNT` was not set to Windows XP or later + - [Win32] Bugfix: Legacy MinGW needs `WINVER` and `UNICODE` before `stddef.h` + - [Cocoa] Bugfix: Cursor was not visible in normal mode in full screen + - [Cocoa] Bugfix: Cursor was not actually hidden in hidden mode + - [Cocoa] Bugfix: Cursor modes were not applied to inactive windows + - [X11] Bugfix: Events for mouse buttons 4 and above were not reported + - [X11] Bugfix: CMake 2.8.7 does not set `X11_Xinput_LIB` even when found ## Contact @@ -264,6 +251,7 @@ skills. - John Bartholomew - Niklas Behrens - Niklas Bergström + - Doug Binks - blanco - Lambert Clara - Noel Cower @@ -298,6 +286,7 @@ skills. - Bruce Mitchener - Jeff Molofee - Jon Morton + - Pierre Moulon - Julian Møller - Ozzy - Peoro diff --git a/docs/Doxyfile.in b/docs/Doxyfile.in index 7c3c431a..eb547d35 100644 --- a/docs/Doxyfile.in +++ b/docs/Doxyfile.in @@ -899,13 +899,13 @@ HTML_FILE_EXTENSION = .html # have to redo this when upgrading to a newer version of doxygen or when # changing the value of configuration settings such as GENERATE_TREEVIEW! -HTML_HEADER = +HTML_HEADER = @GLFW_SOURCE_DIR@/docs/header.html # The HTML_FOOTER tag can be used to specify a personal HTML footer for # each generated HTML page. If it is left blank doxygen will generate a # standard footer. -HTML_FOOTER = +HTML_FOOTER = @GLFW_SOURCE_DIR@/docs/footer.html # The HTML_STYLESHEET tag can be used to specify a user-defined cascading # style sheet that is used by each HTML page. It can be used to @@ -924,7 +924,7 @@ HTML_STYLESHEET = # robust against future updates. Doxygen will copy the style sheet file to # the output directory. -HTML_EXTRA_STYLESHEET = +HTML_EXTRA_STYLESHEET = @GLFW_SOURCE_DIR@/docs/extra.css # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note diff --git a/docs/extra.css b/docs/extra.css new file mode 100644 index 00000000..6d0dde1c --- /dev/null +++ b/docs/extra.css @@ -0,0 +1,312 @@ +html { + background-color:hsl(0,0%,95%); +} + +.glfwheader { + font-size:16px; + height:64px; + max-width:920px; + margin:0em auto; +} + +.glfwheader a#glfwhome { + line-height:64px; + padding-right:48pxpx; + float:left; + color:hsl(0,0%,40%); + font-size:2.5em; + background-image:url("http://www.glfw.org/css/arrow.png"); + background-position:right top; + background-repeat:no-repeat; +} + +.glfwnavbar { + list-style-type:none; + margin-top:0px; + float:right; +} + +.glfwnavbar li { + float:left; +} + +.glfwnavbar a,.glfwnavbar a:visited { + line-height:64px; + margin-left:2em; + display:block; + color:hsl(0,0%,40%); +} + +.glfwheader a#glfwhome,.glfwnavbar a,.glfwnavbar a:visited { + transition:all 0.35s ease 0s; +} + +#titlearea,address.footer { + color:hsl(0,0%,40%); + background-color:hsl(0,0%,95%); + border-bottom:none; +} + +address.footer { + text-align:center; + padding:2em; +} + +div#top { + background-color:hsl(0,0%,40%); +} + +div#navrow1,div#navrow2,div#navrow3,div#navrow4 { + background-color:hsl(0,0%,40%); + background-image:none; + max-width:920px; + margin:0em auto; +} + +ul.tablist { + min-width:700px; +} + +.tablist a,.tablist a:hover,.tablist li,.tablist li.current a { + background-image:none; + text-shadow:none; +} + +.tablist a,.tablist a:visited { + color:hsl(0,0%,95%); + text-shadow:none; +} + +.tablist li.current a { + background:linear-gradient(to bottom,hsl(34,100%,60%) 0%,hsl(24,100%,50%) 100%); + box-shadow:inset 0px 0px 32px hsl(24,100%,50%); + text-shadow:0px -1px 1px hsl(24,100%,35%); + color:hsl(0,0%,100%); +} + +div.contents { + min-height:590px; +} + +div.contents,div.header { + max-width:920px; + margin:0em auto; + padding:0em 2em 2em 2em; + background-color:hsl(0,0%,100%); +} + +div.header { + background-image:none; + border-bottom:none; +} + +table.doxtable th,dl.reflist dt,div.levels { + background:linear-gradient(to bottom,hsl(34,100%,60%) 0%,hsl(24,100%,50%) 100%); + box-shadow:inset 0px 0px 32px hsl(24,100%,50%); + text-shadow:0px -1px 1px hsl(24,100%,35%); + color:hsl(0,0%,100%); +} + +dl.reflist dt a.el,div.levels span { + color:hsl(24,100%,50%); + padding:0.2em; + border-radius:4px; + background-color:hsl(24,100%,90%); + text-shadow:none; +} + +div.memproto,div.qindex,div.ah { + background:linear-gradient(to bottom,hsl(34,0%,95%) 0%,hsl(24,0%,90%) 100%); + box-shadow:inset 0px 0px 32px hsl(24,0%,90%); + text-shadow:0px 1px 1px hsl(24,0%,100%); + color:hsl(0,0%,10%); +} + +div.memproto a { + color:hsl(24,100%,50%); +} + +div.memproto td.paramname { + text-shadow:0px 1px 1px hsl(24,0%,100%); +} + +div.memproto,div.qindex,div.ah { + border:2px solid hsl(24,0%,90%); + border-radius:4px; +} + +div.memdoc { + background:none; + box-shadow:none; + border:none; +} + +td.paramname { + color:hsl(24,100%,25%); +} + +dl.reflist dt { + border:2px solid hsl(24,100%,50%); + border-top-left-radius:4px; + border-top-right-radius:4px; + border-bottom:none; +} + +dl.reflist dd { + border:2px solid hsl(24,100%,50%); + border-bottom-right-radius:4px; + border-bottom-left-radius:4px; + border-top:none; + background:none; + box-shadow:none; +} + +table.doxtable { + border-collapse:inherit; + border-spacing:0px; + border:2px solid hsl(24,100%,50%); + border-radius:4px; +} + +table.doxtable td,table.doxtable th { + border:none; +} + +tr.even,.directory tr.even,table.doxtable tr:nth-child(even) { + background-color:hsl(0,0%,95%); +} + +body { + color:hsl(0,0%,30%); +} + +h1,h2,h2.groupheader,h3,div.toc h3,h4,h5,h6,strong,em { + color:hsl(0,0%,10%); + border-bottom:none; +} + +a,a:hover,a:visited,a:visited:hover,a.el,a.el:visited,.glfwheader a#glfwhome:hover,.tablist a:hover { + color:hsl(24,100%,50%); + text-decoration:none; +} + +.mdescLeft,.mdescRight,.memItemLeft,.memItemRight { + background-color:hsl(0,0%,95%); +} + +div.directory { + border-collapse:inherit; + border-spacing:0px; + border:2px solid hsl(24,100%,50%); + border-radius:4px; +} + +.directory .levels span { + color:hsl(24,100%,50%); + padding:0.1em 0.5em; + margin:auto 0.25em; + border-radius:2px; + background-color:hsl(24,100%,90%); + text-shadow:none; +} + +td.memSeparator { + height:2px; + border:0px; + background:linear-gradient(to right,hsl(0,0%,95%) 0%,hsl(0,0%,85%) 50%,hsl(0,0%,95%) 100%); +} + +dl.note,dl.pre,dl.post,dl.invariant { + background:linear-gradient(to bottom,hsl(103,80%,90%) 0%,hsl(103,80%,85%) 100%); + box-shadow:inset 0px 0px 32px hsl(103,40%,80%); + color:hsl(103,80%,10%); + border:2px solid hsl(103,40%,75%); +} + +dl.warning,dl.attention { + background:linear-gradient(to bottom,hsl(34,80%,90%) 0%,hsl(34,80%,85%) 100%); + box-shadow:inset 0px 0px 32px hsl(34,40%,80%); + color:hsl(34,80%,10%); + border:2px solid hsl(34,40%,75%); +} + +dl.deprecated,dl.bug { + background:linear-gradient(to bottom,hsl(333,80%,90%) 0%,hsl(333,80%,85%) 100%); + box-shadow:inset 0px 0px 32px hsl(333,40%,80%); + color:hsl(333,80%,10%); + border:2px solid hsl(333,40%,75%); +} + +dl.todo,dl.test { + background:linear-gradient(to bottom,hsl(200,80%,90%) 0%,hsl(200,80%,85%) 100%); + box-shadow:inset 0px 0px 32px hsl(200,40%,80%); + color:hsl(200,80%,10%); + border:2px solid hsl(200,40%,75%); +} + +dl.note,dl.pre,dl.post,dl.invariant,dl.warning,dl.attention,dl.deprecated,dl.bug,dl.todo,dl.test { + border-radius:4px; + padding:1em; + text-shadow:0px 1px 1px hsl(0,0%,100%); +} + +div.toc { + background:linear-gradient(to bottom,hsl(34,0%,95%) 0%,hsl(24,0%,90%) 100%); + box-shadow:inset 0px 0px 32px hsl(24,0%,90%); + text-shadow:0px 1px 1px hsl(24,0%,100%); + color:hsl(0,0%,10%); + border:2px solid hsl(24,0%,90%); + border-radius:4px; + float:none; + width:auto; +} + +div.toc h3 { + font-size:1.17em; +} + +div.toc ul { + padding-left:1.5em; +} + +div.toc li { + background:none; + font-size:1em; + padding-left:0em; + list-style-type:disc; +} + +div.ah { + background-image:none; +} + +div.fragment,pre.fragment { + background-color:hsl(0,0%,20%); + border-radius:4px; + border-width:0px; + padding:0.5em 2em; + overflow:auto; + border-left:4px solid hsl(0,0%,80%); +} + +div.line,pre.fragment { + color:hsl(60,30%,96%); +} + +a.code,a.code:visited,span.preprocessor,span.comment { + color:hsl(80,76%,53%); +} + +span.keyword,span.keywordtype,span.keywordflow { + color:hsl(190,81%,67%); +} + +span.stringliteral { + color:hsl(54,70%,68%); +} + +code { + background-color:hsl(0,0%,95%); + padding:0.1em; + border-radius: 4px; +} diff --git a/docs/footer.html b/docs/footer.html new file mode 100644 index 00000000..b0434ca1 --- /dev/null +++ b/docs/footer.html @@ -0,0 +1,7 @@ +
++Last update on $date for $projectname $projectnumber +
+ +