浏览代码

Ripped out horribly broken refresh rate mess.

Camilla Berglund 12 年之前
父节点
当前提交
52dac79219
共有 13 个文件被更改,包括 61 次插入252 次删除
  1. 8 20
      include/GL/glfw3.h
  2. 2 15
      src/cocoa_monitor.m
  3. 1 1
      src/cocoa_platform.h
  4. 1 14
      src/cocoa_window.m
  5. 0 4
      src/internal.h
  6. 16 46
      src/win32_monitor.c
  7. 1 5
      src/win32_platform.h
  8. 0 27
      src/win32_window.c
  9. 14 33
      src/window.c
  10. 11 48
      src/x11_monitor.c
  11. 3 3
      src/x11_platform.h
  12. 4 35
      src/x11_window.c
  13. 0 1
      tests/defaults.c

+ 8 - 20
include/GL/glfw3.h

@@ -500,44 +500,40 @@ extern "C" {
  *  @see glfwWindowHint
  *  @see glfwWindowHint
  */
  */
 #define GLFW_STENCIL_BITS         0x00021005
 #define GLFW_STENCIL_BITS         0x00021005
-/*! @brief The monitor refresh rate.
- *  @see glfwWindowHint glfwGetWindowParam
- */
-#define GLFW_REFRESH_RATE         0x00021006
 /*! @brief The bit depth of the red component of the accumulation buffer.
 /*! @brief The bit depth of the red component of the accumulation buffer.
  *  @see glfwWindowHint
  *  @see glfwWindowHint
  */
  */
-#define GLFW_ACCUM_RED_BITS       0x00021007
+#define GLFW_ACCUM_RED_BITS       0x00021006
 /*! @brief The bit depth of the red component of the accumulation buffer.
 /*! @brief The bit depth of the red component of the accumulation buffer.
  *  @see glfwWindowHint
  *  @see glfwWindowHint
  */
  */
-#define GLFW_ACCUM_GREEN_BITS     0x00021008
+#define GLFW_ACCUM_GREEN_BITS     0x00021007
 /*! @brief The bit depth of the red component of the accumulation buffer.
 /*! @brief The bit depth of the red component of the accumulation buffer.
  *  @see glfwWindowHint
  *  @see glfwWindowHint
  */
  */
-#define GLFW_ACCUM_BLUE_BITS      0x00021009
+#define GLFW_ACCUM_BLUE_BITS      0x00021008
 /*! @brief The bit depth of the red component of the accumulation buffer.
 /*! @brief The bit depth of the red component of the accumulation buffer.
  *  @see glfwWindowHint
  *  @see glfwWindowHint
  */
  */
-#define GLFW_ACCUM_ALPHA_BITS     0x0002100A
+#define GLFW_ACCUM_ALPHA_BITS     0x00021009
 /*! @brief The number of auxiliary buffers.
 /*! @brief The number of auxiliary buffers.
  *  @see glfwWindowHint
  *  @see glfwWindowHint
  */
  */
-#define GLFW_AUX_BUFFERS          0x0002100B
+#define GLFW_AUX_BUFFERS          0x0002100A
 /*! @brief @c GL_TRUE for stereo rendering, or @c GL_FALSE otherwise.
 /*! @brief @c GL_TRUE for stereo rendering, or @c GL_FALSE otherwise.
  *  @see glfwWindowHint
  *  @see glfwWindowHint
  */
  */
-#define GLFW_STEREO               0x0002100C
+#define GLFW_STEREO               0x0002100B
 /*! @brief The number of samples used for default framebuffer multisampling, or
 /*! @brief The number of samples used for default framebuffer multisampling, or
  *  zero to disable multisampling.
  *  zero to disable multisampling.
  *  @see glfwWindowHint
  *  @see glfwWindowHint
  */
  */
-#define GLFW_FSAA_SAMPLES         0x0002100E
+#define GLFW_FSAA_SAMPLES         0x0002100C
 /*! @brief @c GL_TRUE if the framebuffer should be sRGB capable, or @c GL_FALSE
 /*! @brief @c GL_TRUE if the framebuffer should be sRGB capable, or @c GL_FALSE
  *  otherwise.
  *  otherwise.
  *  @see glfwWindowHint
  *  @see glfwWindowHint
  */
  */
-#define GLFW_SRGB_CAPABLE         0x0002100F
+#define GLFW_SRGB_CAPABLE         0x0002100D
 
 
 /*! @brief The @link clients client API @endlink to create a context for.
 /*! @brief The @link clients client API @endlink to create a context for.
  *  @see glfwWindowHint glfwGetWindowParam
  *  @see glfwWindowHint glfwGetWindowParam
@@ -1146,11 +1142,6 @@ GLFWAPI void glfwDefaultWindowHints(void);
  *  specify the desired bit depths of the various components of the default
  *  specify the desired bit depths of the various components of the default
  *  framebuffer.
  *  framebuffer.
  *
  *
- *  The @ref GLFW_REFRESH_RATE hint specifies the desired monitor refresh rate,
- *  in Hz, of the video mode for a fullscreen window, or zero to let the system
- *  choose a suitable refresh rate.  If a windowed mode window is created, this
- *  hint is ignored.
- *
  *  The @ref GLFW_ACCUM_RED_BITS, @ref GLFW_ACCUM_GREEN_BITS, @ref
  *  The @ref GLFW_ACCUM_RED_BITS, @ref GLFW_ACCUM_GREEN_BITS, @ref
  *  GLFW_ACCUM_BLUE_BITS and @ref GLFW_ACCUM_ALPHA_BITS hints specify the
  *  GLFW_ACCUM_BLUE_BITS and @ref GLFW_ACCUM_ALPHA_BITS hints specify the
  *  desired bit depths of the various components of the accumulation buffer.
  *  desired bit depths of the various components of the accumulation buffer.
@@ -1400,9 +1391,6 @@ GLFWAPI GLFWmonitor glfwGetWindowMonitor(GLFWwindow window);
  *  The @ref GLFW_CLOSE_REQUESTED property indicates whether the window has been
  *  The @ref GLFW_CLOSE_REQUESTED property indicates whether the window has been
  *  requested by the user to close.
  *  requested by the user to close.
  *
  *
- *  The @ref GLFW_REFRESH_RATE property will be replaced when the @c
- *  multi-monitor branch is merged.
- *
  *  The @ref GLFW_POSITION_X and @ref GLFW_POSITION_Y properties indicate the
  *  The @ref GLFW_POSITION_X and @ref GLFW_POSITION_Y properties indicate the
  *  screen position, in pixels, of the upper-left corner of the window's client
  *  screen position, in pixels, of the upper-left corner of the window's client
  *  area.
  *  area.

+ 2 - 15
src/cocoa_monitor.m

@@ -139,13 +139,12 @@ static GLFWvidmode vidmodeFromCGDisplayMode(CGDisplayModeRef mode)
 // Change the current video mode
 // Change the current video mode
 //========================================================================
 //========================================================================
 
 
-GLboolean _glfwSetVideoMode(int* width, int* height, int* bpp, int* refreshRate)
+GLboolean _glfwSetVideoMode(int* width, int* height, int* bpp)
 {
 {
     CGDisplayModeRef bestMode = NULL;
     CGDisplayModeRef bestMode = NULL;
     CFArrayRef modes;
     CFArrayRef modes;
     CFIndex count, i;
     CFIndex count, i;
     unsigned int leastSizeDiff = UINT_MAX;
     unsigned int leastSizeDiff = UINT_MAX;
-    double leastRateDiff = DBL_MAX;
 
 
     modes = CGDisplayCopyAllDisplayModes(CGMainDisplayID(), NULL);
     modes = CGDisplayCopyAllDisplayModes(CGMainDisplayID(), NULL);
     count = CFArrayGetCount(modes);
     count = CFArrayGetCount(modes);
@@ -177,23 +176,11 @@ GLboolean _glfwSetVideoMode(int* width, int* height, int* bpp, int* refreshRate)
                                 ((modeWidth - *width) * (modeWidth - *width) +
                                 ((modeWidth - *width) * (modeWidth - *width) +
                                  (modeHeight - *height) * (modeHeight - *height));
                                  (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)))
+        if (sizeDiff < leastSizeDiff)
         {
         {
             bestMode = mode;
             bestMode = mode;
 
 
             leastSizeDiff = sizeDiff;
             leastSizeDiff = sizeDiff;
-            leastRateDiff = rateDiff;
         }
         }
     }
     }
 
 

+ 1 - 1
src/cocoa_platform.h

@@ -114,7 +114,7 @@ void _glfwInitJoysticks(void);
 void _glfwTerminateJoysticks(void);
 void _glfwTerminateJoysticks(void);
 
 
 // Fullscreen
 // Fullscreen
-GLboolean _glfwSetVideoMode(int* width, int* height, int* bpp, int* refreshRate);
+GLboolean _glfwSetVideoMode(int* width, int* height, int* bpp);
 void _glfwRestoreVideoMode(void);
 void _glfwRestoreVideoMode(void);
 
 
 // OpenGL support
 // OpenGL support

+ 1 - 14
src/cocoa_window.m

@@ -772,13 +772,8 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
     {
     {
         int bpp = colorBits + fbconfig->alphaBits;
         int bpp = colorBits + fbconfig->alphaBits;
 
 
-        if (!_glfwSetVideoMode(&window->width,
-                               &window->height,
-                               &bpp,
-                               &window->refreshRate))
-        {
+        if (!_glfwSetVideoMode(&window->width, &window->height, &bpp))
             return GL_FALSE;
             return GL_FALSE;
-        }
 
 
         _glfwPlatformShowWindow(window);
         _glfwPlatformShowWindow(window);
         [[window->NS.object contentView] enterFullScreenMode:[NSScreen mainScreen]
         [[window->NS.object contentView] enterFullScreenMode:[NSScreen mainScreen]
@@ -885,14 +880,6 @@ void _glfwPlatformHideWindow(_GLFWwindow* window)
     _glfwInputWindowVisibility(window, GL_FALSE);
     _glfwInputWindowVisibility(window, GL_FALSE);
 }
 }
 
 
-//========================================================================
-// Write back window parameters into GLFW window structure
-//========================================================================
-
-void _glfwPlatformRefreshWindowParams(_GLFWwindow* window)
-{
-}
-
 
 
 //========================================================================
 //========================================================================
 // Poll for new window and input events
 // Poll for new window and input events

+ 0 - 4
src/internal.h

@@ -91,7 +91,6 @@ struct _GLFWhints
     int         alphaBits;
     int         alphaBits;
     int         depthBits;
     int         depthBits;
     int         stencilBits;
     int         stencilBits;
-    int         refreshRate;
     int         accumRedBits;
     int         accumRedBits;
     int         accumGreenBits;
     int         accumGreenBits;
     int         accumBlueBits;
     int         accumBlueBits;
@@ -123,7 +122,6 @@ struct _GLFWhints
 struct _GLFWwndconfig
 struct _GLFWwndconfig
 {
 {
     const char*   title;
     const char*   title;
-    int           refreshRate;
     GLboolean     resizable;
     GLboolean     resizable;
     GLboolean     visible;
     GLboolean     visible;
     int           positionX;
     int           positionX;
@@ -182,7 +180,6 @@ struct _GLFWwindow
     int       mode;            // GLFW_WINDOWED or GLFW_FULLSCREEN
     int       mode;            // GLFW_WINDOWED or GLFW_FULLSCREEN
     GLboolean resizable;       // GL_TRUE if user may resize this window
     GLboolean resizable;       // GL_TRUE if user may resize this window
     GLboolean visible;         // GL_TRUE if this window is visible
     GLboolean visible;         // GL_TRUE if this window is visible
-    int       refreshRate;     // monitor refresh rate
     void*     userPointer;
     void*     userPointer;
     _GLFWmonitor* monitor;
     _GLFWmonitor* monitor;
 
 
@@ -341,7 +338,6 @@ void _glfwPlatformMakeContextCurrent(_GLFWwindow* window);
 _GLFWwindow* _glfwPlatformGetCurrentContext(void);
 _GLFWwindow* _glfwPlatformGetCurrentContext(void);
 void _glfwPlatformSwapBuffers(_GLFWwindow* window);
 void _glfwPlatformSwapBuffers(_GLFWwindow* window);
 void _glfwPlatformSwapInterval(int interval);
 void _glfwPlatformSwapInterval(int interval);
-void _glfwPlatformRefreshWindowParams(_GLFWwindow* window);
 int  _glfwPlatformExtensionSupported(const char* extension);
 int  _glfwPlatformExtensionSupported(const char* extension);
 GLFWglproc _glfwPlatformGetProcAddress(const char* procname);
 GLFWglproc _glfwPlatformGetProcAddress(const char* procname);
 
 

+ 16 - 46
src/win32_monitor.c

@@ -45,19 +45,18 @@
 
 
 
 
 //========================================================================
 //========================================================================
-// Return closest video mode by dimensions, refresh rate and bits per pixel
+// Return closest video mode by dimensions and bits per pixel
 //========================================================================
 //========================================================================
 
 
 static GLboolean getClosestVideoMode(int* width, int* height,
 static GLboolean getClosestVideoMode(int* width, int* height,
-                                     int* bpp, int* refreshRate,
-                                     GLboolean exactBPP)
+                                     int* bpp, GLboolean exactBPP)
 {
 {
-    int mode, bestWidth = 0, bestHeight = 0, bestBPP = 0, bestRate = 0;
-    unsigned int sizeDiff, rateDiff, leastSizeDiff, leastRateDiff;
+    int mode, bestWidth = 0, bestHeight = 0, bestBPP = 0;
+    unsigned int sizeDiff, leastSizeDiff;
     GLboolean foundMode = GL_FALSE;
     GLboolean foundMode = GL_FALSE;
     DEVMODE dm;
     DEVMODE dm;
 
 
-    leastSizeDiff = leastRateDiff = UINT_MAX;
+    leastSizeDiff = UINT_MAX;
 
 
     for (mode = 0;  ;  mode++)
     for (mode = 0;  ;  mode++)
     {
     {
@@ -74,29 +73,15 @@ static GLboolean getClosestVideoMode(int* width, int* height,
                     (dm.dmPelsHeight - *height) *
                     (dm.dmPelsHeight - *height) *
                     (dm.dmPelsHeight - *height));
                     (dm.dmPelsHeight - *height));
 
 
-        if (*refreshRate > 0)
-        {
-            rateDiff = (dm.dmDisplayFrequency - *refreshRate) *
-                       (dm.dmDisplayFrequency - *refreshRate);
-        }
-        else
-        {
-            // If no refresh rate was specified, then they're all the same
-            rateDiff = 0;
-        }
-
-        // We match first BPP, then screen area and last refresh rate
+        // We match BPP first, then screen area
 
 
-        if ((sizeDiff < leastSizeDiff) ||
-            (sizeDiff == leastSizeDiff && (rateDiff < leastRateDiff)))
+        if ((sizeDiff < leastSizeDiff) || (sizeDiff == leastSizeDiff))
         {
         {
             bestWidth  = dm.dmPelsWidth;
             bestWidth  = dm.dmPelsWidth;
             bestHeight = dm.dmPelsHeight;
             bestHeight = dm.dmPelsHeight;
             bestBPP    = dm.dmBitsPerPel;
             bestBPP    = dm.dmBitsPerPel;
-            bestRate   = dm.dmDisplayFrequency;
 
 
             leastSizeDiff = sizeDiff;
             leastSizeDiff = sizeDiff;
-            leastRateDiff = rateDiff;
 
 
             foundMode = GL_TRUE;
             foundMode = GL_TRUE;
         }
         }
@@ -109,11 +94,6 @@ static GLboolean getClosestVideoMode(int* width, int* height,
     *height = bestHeight;
     *height = bestHeight;
     *bpp    = bestBPP;
     *bpp    = bestBPP;
 
 
-    // Only save the found refresh rate if the client requested a specific
-    // rate; otherwise keep it at zero to let Windows select the best rate
-    if (*refreshRate > 0)
-        *refreshRate = bestRate;
-
     return GL_TRUE;
     return GL_TRUE;
 }
 }
 
 
@@ -127,19 +107,17 @@ static GLboolean getClosestVideoMode(int* width, int* height,
 //========================================================================
 //========================================================================
 
 
 void _glfwSetVideoMode(int* width, int* height,
 void _glfwSetVideoMode(int* width, int* height,
-                       int* bpp, int* refreshRate,
-                       GLboolean exactBPP)
+                       int* bpp, GLboolean exactBPP)
 {
 {
     DEVMODE dm;
     DEVMODE dm;
-    int closestWidth, closestHeight, closestBPP, closestRate;
+    int closestWidth, closestHeight, closestBPP;
 
 
     closestWidth  = *width;
     closestWidth  = *width;
     closestHeight = *height;
     closestHeight = *height;
     closestBPP    = *bpp;
     closestBPP    = *bpp;
-    closestRate   = *refreshRate;
 
 
     if (getClosestVideoMode(&closestWidth, &closestHeight,
     if (getClosestVideoMode(&closestWidth, &closestHeight,
-                            &closestBPP, &closestRate, exactBPP))
+                            &closestBPP, exactBPP))
     {
     {
         dm.dmSize = sizeof(DEVMODE);
         dm.dmSize = sizeof(DEVMODE);
         dm.dmFields     = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL;
         dm.dmFields     = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL;
@@ -147,18 +125,11 @@ void _glfwSetVideoMode(int* width, int* height,
         dm.dmPelsHeight = closestHeight;
         dm.dmPelsHeight = closestHeight;
         dm.dmBitsPerPel = closestBPP;
         dm.dmBitsPerPel = closestBPP;
 
 
-        if (*refreshRate > 0)
-        {
-            dm.dmFields |= DM_DISPLAYFREQUENCY;
-            dm.dmDisplayFrequency = closestRate;
-        }
-
         if (ChangeDisplaySettings(&dm, CDS_FULLSCREEN) == DISP_CHANGE_SUCCESSFUL)
         if (ChangeDisplaySettings(&dm, CDS_FULLSCREEN) == DISP_CHANGE_SUCCESSFUL)
         {
         {
-            *width       = closestWidth;
-            *height      = closestHeight;
-            *bpp         = closestBPP;
-            *refreshRate = closestRate;
+            *width  = closestWidth;
+            *height = closestHeight;
+            *bpp    = closestBPP;
         }
         }
     }
     }
     else
     else
@@ -166,10 +137,9 @@ void _glfwSetVideoMode(int* width, int* height,
         dm.dmSize = sizeof(DEVMODE);
         dm.dmSize = sizeof(DEVMODE);
         EnumDisplaySettings(NULL, ENUM_REGISTRY_SETTINGS, &dm);
         EnumDisplaySettings(NULL, ENUM_REGISTRY_SETTINGS, &dm);
 
 
-        *width       = dm.dmPelsWidth;
-        *height      = dm.dmPelsHeight;
-        *bpp         = dm.dmBitsPerPel;
-        *refreshRate = dm.dmDisplayFrequency;
+        *width  = dm.dmPelsWidth;
+        *height = dm.dmPelsHeight;
+        *bpp    = dm.dmBitsPerPel;
     }
     }
 }
 }
 
 

+ 1 - 5
src/win32_platform.h

@@ -146,7 +146,6 @@ typedef struct _GLFWwindowWin32
     DWORD     dwExStyle;       // --"--
     DWORD     dwExStyle;       // --"--
 
 
     // Various platform specific internal variables
     // Various platform specific internal variables
-    int       desiredRefreshRate; // Desired vertical monitor refresh rate
     GLboolean cursorCentered;
     GLboolean cursorCentered;
     GLboolean cursorInside;
     GLboolean cursorInside;
     int       oldCursorX, oldCursorY;
     int       oldCursorX, oldCursorY;
@@ -169,7 +168,6 @@ typedef struct _GLFWlibraryWin32
         int                   width;
         int                   width;
         int                   height;
         int                   height;
         int                   bitsPerPixel;
         int                   bitsPerPixel;
-        int                   refreshRate;
     } monitor;
     } monitor;
 
 
     // Timer data
     // Timer data
@@ -227,9 +225,7 @@ int _glfwAnalyzeContext(const _GLFWwindow* window,
                         const _GLFWfbconfig* fbconfig);
                         const _GLFWfbconfig* fbconfig);
 
 
 // Fullscreen support
 // Fullscreen support
-void _glfwSetVideoMode(int* width, int* height,
-                       int* bpp, int* refreshRate,
-                       GLboolean exactBPP);
+void _glfwSetVideoMode(int* width, int* height, int* bpp, GLboolean exactBPP);
 void _glfwRestoreVideoMode(void);
 void _glfwRestoreVideoMode(void);
 
 
 
 

+ 0 - 27
src/win32_window.c

@@ -377,7 +377,6 @@ static LRESULT CALLBACK windowProc(HWND hWnd, UINT uMsg,
                         _glfwSetVideoMode(&_glfwLibrary.Win32.monitor.width,
                         _glfwSetVideoMode(&_glfwLibrary.Win32.monitor.width,
                                           &_glfwLibrary.Win32.monitor.height,
                                           &_glfwLibrary.Win32.monitor.height,
                                           &_glfwLibrary.Win32.monitor.bitsPerPixel,
                                           &_glfwLibrary.Win32.monitor.bitsPerPixel,
-                                          &_glfwLibrary.Win32.monitor.refreshRate,
                                           GL_TRUE);
                                           GL_TRUE);
 
 
                         _glfwLibrary.Win32.monitor.modeChanged = GL_TRUE;
                         _glfwLibrary.Win32.monitor.modeChanged = GL_TRUE;
@@ -868,8 +867,6 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
 {
 {
     int status;
     int status;
 
 
-    window->Win32.desiredRefreshRate = wndconfig->refreshRate;
-
     if (!_glfwLibrary.Win32.classAtom)
     if (!_glfwLibrary.Win32.classAtom)
     {
     {
         _glfwLibrary.Win32.classAtom = registerWindowClass();
         _glfwLibrary.Win32.classAtom = registerWindowClass();
@@ -885,13 +882,11 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
 
 
         _glfwLibrary.Win32.monitor.width = window->width;
         _glfwLibrary.Win32.monitor.width = window->width;
         _glfwLibrary.Win32.monitor.height = window->height;
         _glfwLibrary.Win32.monitor.height = window->height;
-        _glfwLibrary.Win32.monitor.refreshRate = wndconfig->refreshRate;
         _glfwLibrary.Win32.monitor.bitsPerPixel = bpp;
         _glfwLibrary.Win32.monitor.bitsPerPixel = bpp;
 
 
         _glfwSetVideoMode(&_glfwLibrary.Win32.monitor.width,
         _glfwSetVideoMode(&_glfwLibrary.Win32.monitor.width,
                           &_glfwLibrary.Win32.monitor.height,
                           &_glfwLibrary.Win32.monitor.height,
                           &_glfwLibrary.Win32.monitor.bitsPerPixel,
                           &_glfwLibrary.Win32.monitor.bitsPerPixel,
-                          &_glfwLibrary.Win32.monitor.refreshRate,
                           GL_FALSE);
                           GL_FALSE);
 
 
         _glfwLibrary.Win32.monitor.modeChanged = GL_TRUE;
         _glfwLibrary.Win32.monitor.modeChanged = GL_TRUE;
@@ -1069,28 +1064,6 @@ void _glfwPlatformHideWindow(_GLFWwindow* window)
 }
 }
 
 
 
 
-//========================================================================
-// Write back window parameters into GLFW window structure
-//========================================================================
-
-void _glfwPlatformRefreshWindowParams(_GLFWwindow* window)
-{
-    DEVMODE dm;
-
-    ZeroMemory(&dm, sizeof(DEVMODE));
-    dm.dmSize = sizeof(DEVMODE);
-
-    if (EnumDisplaySettings(NULL, ENUM_CURRENT_SETTINGS, &dm))
-    {
-        window->refreshRate = dm.dmDisplayFrequency;
-        if (window->refreshRate <= 1)
-            window->refreshRate = 0;
-    }
-    else
-        window->refreshRate = 0;
-}
-
-
 //========================================================================
 //========================================================================
 // Poll for new window and input events
 // Poll for new window and input events
 //========================================================================
 //========================================================================

+ 14 - 33
src/window.c

@@ -241,21 +241,20 @@ GLFWAPI GLFWwindow glfwCreateWindow(int width, int height,
     fbconfig.sRGB           = _glfwLibrary.hints.sRGB ? GL_TRUE : GL_FALSE;
     fbconfig.sRGB           = _glfwLibrary.hints.sRGB ? GL_TRUE : GL_FALSE;
 
 
     // Set up desired window config
     // Set up desired window config
-    wndconfig.title          = title;
-    wndconfig.refreshRate    = Max(_glfwLibrary.hints.refreshRate, 0);
-    wndconfig.resizable      = _glfwLibrary.hints.resizable ? GL_TRUE : GL_FALSE;
-    wndconfig.visible        = _glfwLibrary.hints.visible ? GL_TRUE : GL_FALSE;
-    wndconfig.positionX      = _glfwLibrary.hints.positionX;
-    wndconfig.positionY      = _glfwLibrary.hints.positionY;
-    wndconfig.clientAPI      = _glfwLibrary.hints.clientAPI;
-    wndconfig.glMajor        = _glfwLibrary.hints.glMajor;
-    wndconfig.glMinor        = _glfwLibrary.hints.glMinor;
-    wndconfig.glForward      = _glfwLibrary.hints.glForward ? GL_TRUE : GL_FALSE;
-    wndconfig.glDebug        = _glfwLibrary.hints.glDebug ? GL_TRUE : GL_FALSE;
-    wndconfig.glProfile      = _glfwLibrary.hints.glProfile;
-    wndconfig.glRobustness   = _glfwLibrary.hints.glRobustness;
-    wndconfig.monitor        = (_GLFWmonitor*) monitor;
-    wndconfig.share          = (_GLFWwindow*) share;
+    wndconfig.title         = title;
+    wndconfig.resizable     = _glfwLibrary.hints.resizable ? GL_TRUE : GL_FALSE;
+    wndconfig.visible       = _glfwLibrary.hints.visible ? GL_TRUE : GL_FALSE;
+    wndconfig.positionX     = _glfwLibrary.hints.positionX;
+    wndconfig.positionY     = _glfwLibrary.hints.positionY;
+    wndconfig.clientAPI     = _glfwLibrary.hints.clientAPI;
+    wndconfig.glMajor       = _glfwLibrary.hints.glMajor;
+    wndconfig.glMinor       = _glfwLibrary.hints.glMinor;
+    wndconfig.glForward     = _glfwLibrary.hints.glForward ? GL_TRUE : GL_FALSE;
+    wndconfig.glDebug       = _glfwLibrary.hints.glDebug ? GL_TRUE : GL_FALSE;
+    wndconfig.glProfile     = _glfwLibrary.hints.glProfile;
+    wndconfig.glRobustness  = _glfwLibrary.hints.glRobustness;
+    wndconfig.monitor       = (_GLFWmonitor*) monitor;
+    wndconfig.share         = (_GLFWwindow*) share;
 
 
     // Check the OpenGL bits of the window config
     // Check the OpenGL bits of the window config
     if (!_glfwIsValidContextConfig(&wndconfig))
     if (!_glfwIsValidContextConfig(&wndconfig))
@@ -295,9 +294,6 @@ GLFWAPI GLFWwindow glfwCreateWindow(int width, int height,
         return GL_FALSE;
         return GL_FALSE;
     }
     }
 
 
-    // Cache the actual (as opposed to requested) window parameters
-    _glfwPlatformRefreshWindowParams(window);
-
     glfwMakeContextCurrent(window);
     glfwMakeContextCurrent(window);
 
 
     // Cache the actual (as opposed to requested) context parameters
     // Cache the actual (as opposed to requested) context parameters
@@ -404,9 +400,6 @@ GLFWAPI void glfwWindowHint(int target, int hint)
         case GLFW_STENCIL_BITS:
         case GLFW_STENCIL_BITS:
             _glfwLibrary.hints.stencilBits = hint;
             _glfwLibrary.hints.stencilBits = hint;
             break;
             break;
-        case GLFW_REFRESH_RATE:
-            _glfwLibrary.hints.refreshRate = hint;
-            break;
         case GLFW_ACCUM_RED_BITS:
         case GLFW_ACCUM_RED_BITS:
             _glfwLibrary.hints.accumRedBits = hint;
             _glfwLibrary.hints.accumRedBits = hint;
             break;
             break;
@@ -593,13 +586,6 @@ GLFWAPI void glfwSetWindowSize(GLFWwindow handle, int width, int height)
         return;
         return;
 
 
     _glfwPlatformSetWindowSize(window, width, height);
     _glfwPlatformSetWindowSize(window, width, height);
-
-    if (window->monitor)
-    {
-        // Refresh window parameters (may have changed due to changed video
-        // modes)
-        _glfwPlatformRefreshWindowParams(window);
-    }
 }
 }
 
 
 
 
@@ -642,9 +628,6 @@ GLFWAPI void glfwRestoreWindow(GLFWwindow handle)
         return;
         return;
 
 
     _glfwPlatformRestoreWindow(window);
     _glfwPlatformRestoreWindow(window);
-
-    if (window->monitor)
-        _glfwPlatformRefreshWindowParams(window);
 }
 }
 
 
 
 
@@ -712,8 +695,6 @@ GLFWAPI int glfwGetWindowParam(GLFWwindow handle, int param)
             return window->iconified;
             return window->iconified;
         case GLFW_CLOSE_REQUESTED:
         case GLFW_CLOSE_REQUESTED:
             return window->closeRequested;
             return window->closeRequested;
-        case GLFW_REFRESH_RATE:
-            return window->refreshRate;
         case GLFW_RESIZABLE:
         case GLFW_RESIZABLE:
             return window->resizable;
             return window->resizable;
         case GLFW_VISIBLE:
         case GLFW_VISIBLE:

+ 11 - 48
src/x11_monitor.c

@@ -43,7 +43,7 @@
 // Finds the video mode closest in size to the specified desired size
 // Finds the video mode closest in size to the specified desired size
 //========================================================================
 //========================================================================
 
 
-int _glfwGetClosestVideoMode(int* width, int* height, int* rate)
+int _glfwGetClosestVideoMode(int* width, int* height)
 {
 {
     int i, match, bestmatch;
     int i, match, bestmatch;
 
 
@@ -51,8 +51,6 @@ int _glfwGetClosestVideoMode(int* width, int* height, int* rate)
     {
     {
 #if defined(_GLFW_HAS_XRANDR)
 #if defined(_GLFW_HAS_XRANDR)
         int sizecount, bestsize;
         int sizecount, bestsize;
-        int ratecount, bestrate;
-        short* ratelist;
         XRRScreenConfiguration* sc;
         XRRScreenConfiguration* sc;
         XRRScreenSize* sizelist;
         XRRScreenSize* sizelist;
 
 
@@ -81,26 +79,6 @@ int _glfwGetClosestVideoMode(int* width, int* height, int* rate)
             // Report width & height of best matching mode
             // Report width & height of best matching mode
             *width = sizelist[bestsize].width;
             *width = sizelist[bestsize].width;
             *height = sizelist[bestsize].height;
             *height = sizelist[bestsize].height;
-
-            if (*rate > 0)
-            {
-                ratelist = XRRConfigRates(sc, bestsize, &ratecount);
-
-                bestrate = -1;
-                bestmatch = INT_MAX;
-                for (i = 0;  i < ratecount;  i++)
-                {
-                    match = abs(ratelist[i] - *rate);
-                    if (match < bestmatch)
-                    {
-                        bestmatch = match;
-                        bestrate = ratelist[i];
-                    }
-                }
-
-                if (bestrate != -1)
-                    *rate = bestrate;
-            }
         }
         }
 
 
         XRRFreeScreenConfigInfo(sc);
         XRRFreeScreenConfigInfo(sc);
@@ -122,7 +100,7 @@ int _glfwGetClosestVideoMode(int* width, int* height, int* rate)
 // Change the current video mode
 // Change the current video mode
 //========================================================================
 //========================================================================
 
 
-void _glfwSetVideoModeMODE(int mode, int rate)
+void _glfwSetVideoModeMODE(int mode)
 {
 {
     if (_glfwLibrary.X11.RandR.available)
     if (_glfwLibrary.X11.RandR.available)
     {
     {
@@ -145,27 +123,12 @@ void _glfwSetVideoModeMODE(int mode, int rate)
             _glfwLibrary.X11.FS.modeChanged = GL_TRUE;
             _glfwLibrary.X11.FS.modeChanged = GL_TRUE;
         }
         }
 
 
-        if (rate > 0)
-        {
-            // Set desired configuration
-            XRRSetScreenConfigAndRate(_glfwLibrary.X11.display,
-                                      sc,
-                                      root,
-                                      mode,
-                                      RR_Rotate_0,
-                                      (short) rate,
-                                      CurrentTime);
-        }
-        else
-        {
-            // Set desired configuration
-            XRRSetScreenConfig(_glfwLibrary.X11.display,
-                               sc,
-                               root,
-                               mode,
-                               RR_Rotate_0,
-                               CurrentTime);
-        }
+        XRRSetScreenConfig(_glfwLibrary.X11.display,
+                           sc,
+                           root,
+                           mode,
+                           RR_Rotate_0,
+                           CurrentTime);
 
 
         XRRFreeScreenConfigInfo(sc);
         XRRFreeScreenConfigInfo(sc);
 #endif /*_GLFW_HAS_XRANDR*/
 #endif /*_GLFW_HAS_XRANDR*/
@@ -177,15 +140,15 @@ void _glfwSetVideoModeMODE(int mode, int rate)
 // Change the current video mode
 // Change the current video mode
 //========================================================================
 //========================================================================
 
 
-void _glfwSetVideoMode(int* width, int* height, int* rate)
+void _glfwSetVideoMode(int* width, int* height)
 {
 {
     int bestmode;
     int bestmode;
 
 
     // Find a best match mode
     // Find a best match mode
-    bestmode = _glfwGetClosestVideoMode(width, height, rate);
+    bestmode = _glfwGetClosestVideoMode(width, height);
 
 
     // Change mode
     // Change mode
-    _glfwSetVideoModeMODE(bestmode, *rate);
+    _glfwSetVideoModeMODE(bestmode);
 }
 }
 
 
 
 

+ 3 - 3
src/x11_platform.h

@@ -252,9 +252,9 @@ int _glfwCreateContext(_GLFWwindow* window,
 void _glfwDestroyContext(_GLFWwindow* window);
 void _glfwDestroyContext(_GLFWwindow* window);
 
 
 // Fullscreen support
 // Fullscreen support
-int  _glfwGetClosestVideoMode(int* width, int* height, int* rate);
-void _glfwSetVideoModeMODE(int mode, int rate);
-void _glfwSetVideoMode(int* width, int* height, int* rate);
+int  _glfwGetClosestVideoMode(int* width, int* height);
+void _glfwSetVideoModeMODE(int mode);
+void _glfwSetVideoMode(int* width, int* height);
 void _glfwRestoreVideoMode(void);
 void _glfwRestoreVideoMode(void);
 
 
 // Joystick input
 // Joystick input

+ 4 - 35
src/x11_window.c

@@ -339,8 +339,7 @@ static void enterFullscreenMode(_GLFWwindow* window)
         _glfwLibrary.X11.saver.changed = GL_TRUE;
         _glfwLibrary.X11.saver.changed = GL_TRUE;
     }
     }
 
 
-    _glfwSetVideoMode(&window->width, &window->height,
-                      &window->refreshRate);
+    _glfwSetVideoMode(&window->width, &window->height);
 
 
     if (_glfwLibrary.X11.hasEWMH &&
     if (_glfwLibrary.X11.hasEWMH &&
         _glfwLibrary.X11.wmState != None &&
         _glfwLibrary.X11.wmState != None &&
@@ -855,8 +854,6 @@ int _glfwPlatformCreateWindow(_GLFWwindow* window,
                               const _GLFWwndconfig* wndconfig,
                               const _GLFWwndconfig* wndconfig,
                               const _GLFWfbconfig* fbconfig)
                               const _GLFWfbconfig* fbconfig)
 {
 {
-    window->refreshRate = wndconfig->refreshRate;
-
     if (!_glfwCreateContext(window, wndconfig, fbconfig))
     if (!_glfwCreateContext(window, wndconfig, fbconfig))
         return GL_FALSE;
         return GL_FALSE;
 
 
@@ -977,14 +974,12 @@ void _glfwPlatformSetWindowTitle(_GLFWwindow* window, const char* title)
 
 
 void _glfwPlatformSetWindowSize(_GLFWwindow* window, int width, int height)
 void _glfwPlatformSetWindowSize(_GLFWwindow* window, int width, int height)
 {
 {
-    int mode = 0, rate, sizeChanged = GL_FALSE;
-
-    rate = window->refreshRate;
+    int mode = 0, sizeChanged = GL_FALSE;
 
 
     if (window->monitor)
     if (window->monitor)
     {
     {
         // Get the closest matching video mode for the specified window size
         // Get the closest matching video mode for the specified window size
-        mode = _glfwGetClosestVideoMode(&width, &height, &rate);
+        mode = _glfwGetClosestVideoMode(&width, &height);
     }
     }
 
 
     if (!window->resizable)
     if (!window->resizable)
@@ -1012,8 +1007,7 @@ void _glfwPlatformSetWindowSize(_GLFWwindow* window, int width, int height)
             sizeChanged = GL_TRUE;
             sizeChanged = GL_TRUE;
         }
         }
 
 
-        // Change video mode, keeping current refresh rate
-        _glfwSetVideoModeMODE(mode, window->refreshRate);
+        _glfwSetVideoModeMODE(mode);
     }
     }
 
 
     // Set window size (if not already changed)
     // Set window size (if not already changed)
@@ -1089,31 +1083,6 @@ void _glfwPlatformHideWindow(_GLFWwindow* window)
 }
 }
 
 
 
 
-//========================================================================
-// Read back framebuffer parameters from the context
-//========================================================================
-
-void _glfwPlatformRefreshWindowParams(_GLFWwindow* window)
-{
-    // Retrieve refresh rate if possible
-    if (_glfwLibrary.X11.RandR.available)
-    {
-#if defined(_GLFW_HAS_XRANDR)
-        XRRScreenConfiguration* sc;
-
-        sc = XRRGetScreenInfo(_glfwLibrary.X11.display, _glfwLibrary.X11.root);
-        window->refreshRate = XRRConfigCurrentRate(sc);
-        XRRFreeScreenConfigInfo(sc);
-#endif /*_GLFW_HAS_XRANDR*/
-    }
-    else
-    {
-        // Zero means unknown according to the GLFW spec
-        window->refreshRate = 0;
-    }
-}
-
-
 //========================================================================
 //========================================================================
 // Poll for new window and input events
 // Poll for new window and input events
 //========================================================================
 //========================================================================

+ 0 - 1
tests/defaults.c

@@ -63,7 +63,6 @@ static ParamGL gl_params[] =
 
 
 static ParamGLFW glfw_params[] =
 static ParamGLFW glfw_params[] =
 {
 {
-    { GLFW_REFRESH_RATE, "refresh rate" },
     { GLFW_CONTEXT_VERSION_MAJOR, "Context version major" },
     { GLFW_CONTEXT_VERSION_MAJOR, "Context version major" },
     { GLFW_CONTEXT_VERSION_MINOR, "Context version minor" },
     { GLFW_CONTEXT_VERSION_MINOR, "Context version minor" },
     { GLFW_OPENGL_FORWARD_COMPAT, "OpenGL forward compatible" },
     { GLFW_OPENGL_FORWARD_COMPAT, "OpenGL forward compatible" },