diff --git a/CMakeLists.txt b/CMakeLists.txt
index ba17da7e..b0cf2a4e 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -130,7 +130,7 @@ add_subdirectory(tests)
#--------------------------------------------------------------------
# Create shared configuration header
#--------------------------------------------------------------------
-configure_file(${GLFW_SOURCE_DIR}/src/config.h.cmake
+configure_file(${GLFW_SOURCE_DIR}/src/config.h.in
${GLFW_BINARY_DIR}/src/config.h @ONLY)
#--------------------------------------------------------------------
diff --git a/readme.html b/readme.html
index 1482a13d..24f6d203 100644
--- a/readme.html
+++ b/readme.html
@@ -275,6 +275,7 @@ version of GLFW.
Added sharing
simple OpenGL object sharing 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 glfwSetGammaFormula
, glfwSetGammaRamp
and glfwGetGammaRamp
functions and GLFWgammaramp
type for monitor gamma ramp control
Changed buffer bit depth parameters of glfwOpenWindow
to window hints
Renamed glfw.h
to glfw3.h
to avoid conflicts with 2.x series
Renamed GLFW_WINDOW
token to GLFW_WINDOWED
diff --git a/src/cocoa/platform.h b/src/cocoa/platform.h
index 708f8aeb..b77241a9 100644
--- a/src/cocoa/platform.h
+++ b/src/cocoa/platform.h
@@ -67,6 +67,7 @@ typedef const GLubyte* (APIENTRY *PFNGLGETSTRINGIPROC)(GLenum, GLuint);
//------------------------------------------------------------------------
typedef intptr_t GLFWintptr;
+
//------------------------------------------------------------------------
// Platform-specific OpenGL context structure
//------------------------------------------------------------------------
diff --git a/src/config.h.cmake b/src/config.h.cmake
deleted file mode 100644
index 78a59fad..00000000
--- a/src/config.h.cmake
+++ /dev/null
@@ -1,24 +0,0 @@
-/* Configure build time options of GLFW */
-
-/* Define this to 1 if XRandR is available */
-#cmakedefine _GLFW_HAS_XRANDR 1
-/* Define this to 1 if Xf86VidMode is available */
-#cmakedefine _GLFW_HAS_XF86VIDMODE 1
-
-/* Define this to 1 if glXGetProcAddress is available */
-#cmakedefine _GLFW_HAS_GLXGETPROCADDRESS 1
-/* Define this to 1 if glXGetProcAddressARB is available */
-#cmakedefine _GLFW_HAS_GLXGETPROCADDRESSARB 1
-/* Define this to 1 if glXGetProcAddressEXT is available */
-#cmakedefine _GLFW_HAS_GLXGETPROCADDRESSEXT 1
-
-/* 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
-
-#define _GLFW_VERSION_FULL "@GLFW_VERSION_FULL@"
-
diff --git a/src/config.h.in b/src/config.h.in
new file mode 100644
index 00000000..b1c77e73
--- /dev/null
+++ b/src/config.h.in
@@ -0,0 +1,60 @@
+//========================================================================
+// GLFW - An OpenGL framework
+// Platform: Any
+// API version: 3.0
+// WWW: http://www.glfw.org/
+//------------------------------------------------------------------------
+// Copyright (c) 2010 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.
+//
+//========================================================================
+// As config.h.in, this file is used by CMake to produce the config.h shared
+// configuration header file. If you are adding a feature requiring
+// conditional compilation, this is the proper place to add the macros.
+//========================================================================
+// As config.h, this file defines compile-time build options and macros for
+// all platforms supported by GLFW. As this is a generated file, don't modify
+// it. Instead, you should modify the config.h.in file.
+//========================================================================
+
+// Define this to 1 if XRandR is available
+#cmakedefine _GLFW_HAS_XRANDR 1
+// Define this to 1 if Xf86VidMode is available
+#cmakedefine _GLFW_HAS_XF86VIDMODE 1
+
+// Define this to 1 if glXGetProcAddress is available
+#cmakedefine _GLFW_HAS_GLXGETPROCADDRESS 1
+// Define this to 1 if glXGetProcAddressARB is available
+#cmakedefine _GLFW_HAS_GLXGETPROCADDRESSARB 1
+// Define this to 1 if glXGetProcAddressEXT is available
+#cmakedefine _GLFW_HAS_GLXGETPROCADDRESSEXT 1
+
+// 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@"
+
diff --git a/src/internal.h b/src/internal.h
index ee4e92c5..a44ab51a 100644
--- a/src/internal.h
+++ b/src/internal.h
@@ -205,6 +205,7 @@ struct _GLFWwindow
int glForward, glDebug, glProfile;
PFNGLGETSTRINGIPROC GetStringi;
+ // These are defined in the current port's platform.h
_GLFW_PLATFORM_WINDOW_STATE;
_GLFW_PLATFORM_CONTEXT_STATE;
};
@@ -226,6 +227,7 @@ struct _GLFWlibrary
GLFWgammaramp originalRamp;
int originalRampSize;
+ // This is defined in the current port's platform.h
_GLFW_PLATFORM_LIBRARY_STATE;
};
diff --git a/src/x11/platform.h b/src/x11/platform.h
index ef096c36..a3a6e428 100644
--- a/src/x11/platform.h
+++ b/src/x11/platform.h
@@ -66,10 +66,6 @@
#include
#endif
-// Pointer length integer
-// One day, this will most likely move into glfw.h
-typedef intptr_t GLFWintptr;
-
#ifndef GL_VERSION_3_0
@@ -83,10 +79,15 @@ typedef const GLubyte* (APIENTRY *PFNGLGETSTRINGIPROC)(GLenum, GLuint);
#define _GLFW_PLATFORM_CONTEXT_STATE _GLFWcontextGLX GLX
+//========================================================================
+// GLFW platform specific types
+//========================================================================
+
+//------------------------------------------------------------------------
+// Pointer length integer
+//------------------------------------------------------------------------
+typedef intptr_t GLFWintptr;
-//========================================================================
-// Global variables (GLFW internals)
-//========================================================================
//------------------------------------------------------------------------
// Platform-specific OpenGL context structure
@@ -168,25 +169,25 @@ typedef struct _GLFWlibraryX11
// Screensaver data
struct {
- int changed;
- int timeout;
- int interval;
- int blanking;
- int exposure;
+ GLboolean changed;
+ int timeout;
+ int interval;
+ int blanking;
+ int exposure;
} saver;
// Fullscreen data
struct {
- int modeChanged;
+ GLboolean modeChanged;
#if defined(_GLFW_HAS_XRANDR)
- SizeID oldSizeID;
- int oldWidth;
- int oldHeight;
- Rotation oldRotation;
-#endif
+ SizeID oldSizeID;
+ int oldWidth;
+ int oldHeight;
+ Rotation oldRotation;
+#endif /*_GLFW_HAS_XRANDR*/
#if defined(_GLFW_HAS_XF86VIDMODE)
XF86VidModeModeInfo oldMode;
-#endif
+#endif /*_GLFW_HAS_XF86VIDMODE*/
} FS;
// Timer data
@@ -196,7 +197,7 @@ typedef struct _GLFWlibraryX11
} timer;
#if defined(_GLFW_DLOPEN_LIBGL)
- void* libGL; // dlopen handle for libGL.so
+ void* libGL; // dlopen handle for libGL.so
#endif
} _GLFWlibraryX11;
diff --git a/src/x11/x11_fullscreen.c b/src/x11/x11_fullscreen.c
index 2f8d6b52..6169d06c 100644
--- a/src/x11/x11_fullscreen.c
+++ b/src/x11/x11_fullscreen.c
@@ -51,15 +51,15 @@ int _glfwGetClosestVideoMode(int screen, int* width, int* height, int* rate)
short* ratelist;
XRRScreenConfiguration* sc;
XRRScreenSize* sizelist;
-#endif
+#endif /*_GLFW_HAS_XRANDR*/
#if defined(_GLFW_HAS_XF86VIDMODE)
XF86VidModeModeInfo** modelist;
int bestmode, modecount;
-#endif
+#endif /*_GLFW_HAS_XF86VIDMODE*/
-#if defined(_GLFW_HAS_XRANDR)
if (_glfwLibrary.X11.RandR.available)
{
+#if defined(_GLFW_HAS_XRANDR)
sc = XRRGetScreenInfo(_glfwLibrary.X11.display,
RootWindow(_glfwLibrary.X11.display, screen));
@@ -113,14 +113,11 @@ int _glfwGetClosestVideoMode(int screen, int* width, int* height, int* rate)
if (bestsize != -1)
return bestsize;
+#endif /*_GLFW_HAS_XRANDR*/
}
-#endif
-
-#if defined(_GLFW_HAS_XF86VIDMODE)
- // Use the XF86VidMode extension to control video resolution
- if (_glfwLibrary.X11.VidMode.available &&
- !_glfwLibrary.X11.RandR.available)
+ else if (_glfwLibrary.X11.VidMode.available)
{
+#if defined(_GLFW_HAS_XF86VIDMODE)
// Get a list of all available display modes
XF86VidModeGetAllModeLines(_glfwLibrary.X11.display, screen,
&modecount, &modelist);
@@ -153,8 +150,8 @@ int _glfwGetClosestVideoMode(int screen, int* width, int* height, int* rate)
if (bestmode != -1)
return bestmode;
+#endif /*_GLFW_HAS_XF86VIDMODE*/
}
-#endif
// Default: Simply use the screen resolution
*width = DisplayWidth(_glfwLibrary.X11.display, screen);
@@ -173,15 +170,15 @@ void _glfwSetVideoModeMODE(int screen, int mode, int rate)
#if defined(_GLFW_HAS_XRANDR)
XRRScreenConfiguration* sc;
Window root;
-#endif
+#endif /*_GLFW_HAS_XRANDR*/
#if defined(_GLFW_HAS_XF86VIDMODE)
XF86VidModeModeInfo **modelist;
int modecount;
-#endif
+#endif /*_GLFW_HAS_XF86VIDMODE*/
-#if defined(_GLFW_HAS_XRANDR)
if (_glfwLibrary.X11.RandR.available)
{
+#if defined(_GLFW_HAS_XRANDR)
root = RootWindow(_glfwLibrary.X11.display, screen);
sc = XRRGetScreenInfo(_glfwLibrary.X11.display, root);
@@ -218,14 +215,11 @@ void _glfwSetVideoModeMODE(int screen, int mode, int rate)
}
XRRFreeScreenConfigInfo(sc);
+#endif /*_GLFW_HAS_XRANDR*/
}
-#endif
-
-#if defined(_GLFW_HAS_XF86VIDMODE)
- // Use the XF86VidMode extension to control video resolution
- if (_glfwLibrary.X11.VidMode.available &&
- !_glfwLibrary.X11.RandR.available)
+ else if (_glfwLibrary.X11.VidMode.available)
{
+#if defined(_GLFW_HAS_XF86VIDMODE)
// Get a list of all available display modes
XF86VidModeGetAllModeLines(_glfwLibrary.X11.display, screen,
&modecount, &modelist);
@@ -253,8 +247,8 @@ void _glfwSetVideoModeMODE(int screen, int mode, int rate)
// Free mode list
XFree(modelist);
+#endif /*_GLFW_HAS_XF86VIDMODE*/
}
-#endif
}
@@ -282,9 +276,9 @@ void _glfwRestoreVideoMode(int screen)
{
if (_glfwLibrary.X11.FS.modeChanged)
{
-#if defined(_GLFW_HAS_XRANDR)
if (_glfwLibrary.X11.RandR.available)
{
+#if defined(_GLFW_HAS_XRANDR)
XRRScreenConfiguration* sc;
if (_glfwLibrary.X11.RandR.available)
@@ -301,12 +295,11 @@ void _glfwRestoreVideoMode(int screen)
XRRFreeScreenConfigInfo(sc);
}
+#endif /*_GLFW_HAS_XRANDR*/
}
-#endif
-#if defined(_GLFW_HAS_XF86VIDMODE)
- if (_glfwLibrary.X11.VidMode.available &&
- !_glfwLibrary.X11.RandR.available)
+ else if (_glfwLibrary.X11.VidMode.available)
{
+#if defined(_GLFW_HAS_XF86VIDMODE)
// Unlock mode switch
XF86VidModeLockModeSwitch(_glfwLibrary.X11.display, screen, 0);
@@ -314,8 +307,8 @@ void _glfwRestoreVideoMode(int screen)
XF86VidModeSwitchToMode(_glfwLibrary.X11.display,
screen,
&_glfwLibrary.X11.FS.oldMode);
+#endif /*_GLFW_HAS_XF86VIDMODE*/
}
-#endif
_glfwLibrary.X11.FS.modeChanged = GL_FALSE;
}
@@ -349,11 +342,11 @@ int _glfwPlatformGetVideoModes(GLFWvidmode* list, int maxcount)
XRRScreenConfiguration* sc;
XRRScreenSize* sizelist;
int sizecount;
-#endif
+#endif /*_GLFW_HAS_XRANDR*/
#if defined(_GLFW_HAS_XF86VIDMODE)
XF86VidModeModeInfo** modelist;
int modecount, width, height;
-#endif
+#endif /*_GLFW_HAS_XF86VIDMODE*/
// Get list of visuals
vislist = XGetVisualInfo(_glfwLibrary.X11.display, 0, &dummy, &viscount);
@@ -400,9 +393,10 @@ int _glfwPlatformGetVideoModes(GLFWvidmode* list, int maxcount)
resarray = NULL;
// Build resolution array
-#if defined(_GLFW_HAS_XRANDR)
+
if (_glfwLibrary.X11.RandR.available)
{
+#if defined(_GLFW_HAS_XRANDR)
sc = XRRGetScreenInfo(_glfwLibrary.X11.display, _glfwLibrary.X11.root);
sizelist = XRRConfigSizes(sc, &sizecount);
@@ -416,13 +410,11 @@ int _glfwPlatformGetVideoModes(GLFWvidmode* list, int maxcount)
}
XRRFreeScreenConfigInfo(sc);
+#endif /*_GLFW_HAS_XRANDR*/
}
-#endif
-
-#if defined(_GLFW_HAS_XF86VIDMODE)
- if (_glfwLibrary.X11.VidMode.available &&
- !_glfwLibrary.X11.RandR.available)
+ else if (_glfwLibrary.X11.VidMode.available)
{
+#if defined(_GLFW_HAS_XF86VIDMODE)
XF86VidModeGetAllModeLines(_glfwLibrary.X11.display, screen, &modecount, &modelist);
resarray = (struct _glfwResolution*) malloc(sizeof(struct _glfwResolution) * modecount);
@@ -448,8 +440,8 @@ int _glfwPlatformGetVideoModes(GLFWvidmode* list, int maxcount)
}
XFree(modelist);
+#endif /*_GLFW_HAS_XF86VIDMODE*/
}
-#endif
if (!resarray)
{
@@ -495,7 +487,7 @@ void _glfwPlatformGetDesktopMode(GLFWvidmode* mode)
#if defined(_GLFW_HAS_XF86VIDMODE)
XF86VidModeModeInfo** modelist;
int modecount;
-#endif
+#endif /*_GLFW_HAS_XF86VIDMODE*/
// Get display depth
bpp = DefaultDepth(_glfwLibrary.X11.display, screen);
@@ -503,46 +495,27 @@ void _glfwPlatformGetDesktopMode(GLFWvidmode* mode)
// Convert BPP to RGB bits
_glfwSplitBPP(bpp, &mode->redBits, &mode->greenBits, &mode->blueBits);
-#if defined(_GLFW_HAS_XRANDR)
- if (_glfwLibrary.X11.RandR.available)
+ if (_glfwLibrary.X11.FS.modeChanged)
{
- if (_glfwLibrary.X11.FS.modeChanged)
+ if (_glfwLibrary.X11.RandR.available)
{
+#if defined(_GLFW_HAS_XRANDR)
mode->width = _glfwLibrary.X11.FS.oldWidth;
mode->height = _glfwLibrary.X11.FS.oldHeight;
- return;
+#endif /*_GLFW_HAS_XRANDR*/
}
- }
-#endif
-#if defined(_GLFW_HAS_XF86VIDMODE)
- if (_glfwLibrary.X11.VidMode.available &&
- !_glfwLibrary.X11.RandR.available)
- {
- if (_glfwLibrary.X11.FS.modeChanged)
+ else if (_glfwLibrary.X11.VidMode.available)
{
- // The old (desktop) mode is stored in _glfwWin.FS.oldMode
+#if defined(_GLFW_HAS_XF86VIDMODE)
mode->width = _glfwLibrary.X11.FS.oldMode.hdisplay;
mode->height = _glfwLibrary.X11.FS.oldMode.vdisplay;
+#endif /*_GLFW_HAS_XF86VIDMODE*/
}
- else
- {
- // Use the XF86VidMode extension to get list of video modes
- XF86VidModeGetAllModeLines(_glfwLibrary.X11.display, screen, &modecount, &modelist);
-
- // The first mode in the list is the current (desktio) mode
- mode->width = modelist[0]->hdisplay;
- mode->height = modelist[0]->vdisplay;
-
- // Free list
- XFree(modelist);
- }
-
- return;
}
-#endif
-
- // Get current display width and height
- mode->width = DisplayWidth(_glfwLibrary.X11.display, screen);
- mode->height = DisplayHeight(_glfwLibrary.X11.display, screen);
+ else
+ {
+ mode->width = DisplayWidth(_glfwLibrary.X11.display, screen);
+ mode->height = DisplayHeight(_glfwLibrary.X11.display, screen);
+ }
}
diff --git a/src/x11/x11_gamma.c b/src/x11/x11_gamma.c
index 85522bef..356e7dea 100644
--- a/src/x11/x11_gamma.c
+++ b/src/x11/x11_gamma.c
@@ -62,7 +62,7 @@ void _glfwPlatformGetGammaRamp(GLFWgammaramp* ramp)
XRRFreeGamma(gamma);
XRRFreeScreenResources(rr);
}
-#endif
+#endif /*_GLFW_HAS_XRANDR*/
else if (_glfwLibrary.X11.VidMode.available)
{
#if defined (_GLFW_HAS_XF86VIDMODE)
@@ -72,7 +72,7 @@ void _glfwPlatformGetGammaRamp(GLFWgammaramp* ramp)
ramp->red,
ramp->green,
ramp->blue);
-#endif
+#endif /*_GLFW_HAS_XF86VIDMODE*/
}
}
@@ -108,7 +108,7 @@ void _glfwPlatformSetGammaRamp(const GLFWgammaramp* ramp)
XRRFreeScreenResources(rr);
}
-#endif
+#endif /*_GLFW_HAS_XRANDR*/
else if (_glfwLibrary.X11.VidMode.available)
{
#if defined (_GLFW_HAS_XF86VIDMODE)
@@ -118,7 +118,7 @@ void _glfwPlatformSetGammaRamp(const GLFWgammaramp* ramp)
(unsigned short*) ramp->red,
(unsigned short*) ramp->green,
(unsigned short*) ramp->blue);
-#endif
+#endif /*_GLFW_HAS_XF86VIDMODE*/
}
}
diff --git a/src/x11/x11_init.c b/src/x11/x11_init.c
index 0653b5ca..4290be7c 100644
--- a/src/x11/x11_init.c
+++ b/src/x11/x11_init.c
@@ -90,7 +90,7 @@ static GLboolean initDisplay(void)
&_glfwLibrary.X11.VidMode.errorBase);
#else
_glfwLibrary.X11.VidMode.available = GL_FALSE;
-#endif
+#endif /*_GLFW_HAS_XF86VIDMODE*/
// Check for XRandR extension
#ifdef _GLFW_HAS_XRANDR
@@ -107,7 +107,7 @@ static GLboolean initDisplay(void)
}
#else
_glfwLibrary.X11.RandR.available = GL_FALSE;
-#endif
+#endif /*_GLFW_HAS_XRANDR*/
// Check if GLX is supported on this display
if (!glXQueryExtension(_glfwLibrary.X11.display, NULL, NULL))
@@ -162,7 +162,7 @@ static void initGammaRamp(void)
XRRFreeScreenResources(rr);
}
-#endif
+#endif /*_GLFW_HAS_XRANDR*/
#if defined(_GLFW_HAS_XF86VIDMODE)
if (_glfwLibrary.X11.VidMode.available &&
@@ -173,7 +173,7 @@ static void initGammaRamp(void)
_glfwLibrary.X11.screen,
&_glfwLibrary.originalRampSize);
}
-#endif
+#endif /*_GLFW_HAS_XF86VIDMODE*/
if (!_glfwLibrary.originalRampSize)
fprintf(stderr, "Gamma ramp setting unsupported\n");
diff --git a/src/x11/x11_window.c b/src/x11/x11_window.c
index 449efcd9..e83c8cbc 100644
--- a/src/x11/x11_window.c
+++ b/src/x11/x11_window.c
@@ -1252,7 +1252,7 @@ static void processSingleEvent(void)
return;
}
- if ((Atom) event.xclient.data.l[ 0 ] == window->X11.wmDeleteWindow)
+ if ((Atom) event.xclient.data.l[0] == window->X11.wmDeleteWindow)
{
// The window manager was asked to close the window, for example by
// the user pressing a 'close' window decoration button
@@ -1260,7 +1260,7 @@ static void processSingleEvent(void)
window->closeRequested = GL_TRUE;
}
else if (window->X11.wmPing != None &&
- (Atom) event.xclient.data.l[ 0 ] == window->X11.wmPing)
+ (Atom) event.xclient.data.l[0] == window->X11.wmPing)
{
// The window manager is pinging us to make sure we are still
// responding to events
@@ -1380,7 +1380,7 @@ static void processSingleEvent(void)
break;
}
}
-#endif
+#endif /*_GLFW_HAS_XRANDR*/
break;
}
}
@@ -1444,7 +1444,8 @@ int _glfwPlatformOpenWindow(_GLFWwindow* window,
window->X11.handle,
RRScreenChangeNotifyMask);
}
-#endif
+#endif /*_GLFW_HAS_XRANDR*/
+
enterFullscreenMode(window);
}
@@ -1670,12 +1671,12 @@ void _glfwPlatformRefreshWindowParams(void)
GLXFBConfig* fbconfig;
#if defined(_GLFW_HAS_XRANDR)
XRRScreenConfiguration* sc;
-#endif
+#endif /*_GLFW_HAS_XRANDR*/
#if defined(_GLFW_HAS_XF86VIDMODE)
XF86VidModeModeLine modeline;
int dotclock;
float pixels_per_second, pixels_per_frame;
-#endif
+#endif /*_GLFW_HAS_XF86VIDMODE*/
_GLFWwindow* window = _glfwLibrary.currentWindow;
int attribs[] = { GLX_FBCONFIG_ID, window->GLX.fbconfigID, None };
@@ -1734,26 +1735,25 @@ void _glfwPlatformRefreshWindowParams(void)
window->refreshRate = 0;
// Retrieve refresh rate if possible
-#if defined(_GLFW_HAS_XRANDR)
if (_glfwLibrary.X11.RandR.available)
{
+#if defined(_GLFW_HAS_XRANDR)
sc = XRRGetScreenInfo(_glfwLibrary.X11.display, _glfwLibrary.X11.root);
window->refreshRate = XRRConfigCurrentRate(sc);
XRRFreeScreenConfigInfo(sc);
+#endif /*_GLFW_HAS_XRANDR*/
}
-#endif
-#if defined(_GLFW_HAS_XF86VIDMODE)
- if (_glfwLibrary.X11.VidMode.available &&
- !_glfwLibrary.X11.RandR.available)
+ else if (_glfwLibrary.X11.VidMode.available)
{
+#if defined(_GLFW_HAS_XF86VIDMODE)
// Use the XF86VidMode extension to get current video mode
XF86VidModeGetModeLine(_glfwLibrary.X11.display, _glfwLibrary.X11.screen,
&dotclock, &modeline);
pixels_per_second = 1000.0f * (float) dotclock;
pixels_per_frame = (float) modeline.htotal * modeline.vtotal;
window->refreshRate = (int)(pixels_per_second/pixels_per_frame+0.5);
+#endif /*_GLFW_HAS_XF86VIDMODE*/
}
-#endif
XFree(fbconfig);
}