If you are using a CRT-monitor it will default to 60 Hz when using fullscreen mode. Instead of using a refresh rate locker for certain resolutions add a member to the VideoMode class.
VideoMode.hpp
Add an unsigned int DisplayFreq member.
unsigned int Width; ///< Video mode width, in pixels
unsigned int Height; ///< Video mode height, in pixels
unsigned int BitsPerPixel; ///< Video mode pixel depth, in bits per pixels
unsigned int DisplayFreq; ///< Video mode display frequency
Change the constructor to take a DisplayFreq parameter(defaults to 60 if not specified).
VideoMode::VideoMode(unsigned int ModeWidth, unsigned int ModeHeight, unsigned int ModeBpp, unsigned int ModeFreq) :
Width (ModeWidth),
Height (ModeHeight),
BitsPerPixel(ModeBpp),
DisplayFreq(ModeFreq)
I have implemented it for the win32 platform
VideoModeSupport.cpp
In the GetSupportedVideoModes method add the DisplayFrequency argument to the constructor call.
VideoMode Mode(Win32Mode.dmPelsWidth,Win32Mode.dmPelsHeight,
Win32Mode.dmBitsPerPel,Win32Mode.dmDisplayFrequency);
VideoMode.cpp
Change the overloaded comparison operator to
return (Width == Other.Width) &&
(Height == Other.Height) &&
(BitsPerPixel == Other.BitsPerPixel) &&
(DisplayFreq == Other.DisplayFreq);
so it can fail if a too high refresh rate was selected.
WindowImpWin32.cpp
In the SwitchToFullscreen method add
DevMode.dmDisplayFrequency = Mode.DisplayFreq;
DevMode.dmFields = DM_PELSWIDTH | DM_PELSHEIGHT | DM_BITSPERPEL | DM_DISPLAYFREQUENCY;
so it can change the frequency when the call to ChangeDisplaySettings is made.