From 26aaf558720c0557d2dba33c3986c18ac9af1ba2 Mon Sep 17 00:00:00 2001 From: Camilla Berglund Date: Thu, 14 Oct 2010 15:13:51 +0200 Subject: [PATCH] RandR and VidMode cleanup and formatting. --- src/x11/x11_fullscreen.c | 107 +++++++++++++++------------------------ src/x11/x11_gamma.c | 8 +-- src/x11/x11_init.c | 8 +-- src/x11/x11_window.c | 20 ++++---- 4 files changed, 58 insertions(+), 85 deletions(-) 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 264e4c98..f80fc917 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..6ef3b7c0 100644 --- a/src/x11/x11_window.c +++ b/src/x11/x11_window.c @@ -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); }