Only restore gamma ramp if it has been changed.
diff --git a/src/cocoa_init.m b/src/cocoa_init.m index 329bcfa..7c208b9 100644 --- a/src/cocoa_init.m +++ b/src/cocoa_init.m
@@ -129,7 +129,8 @@ } // Restore the original gamma ramp - _glfwPlatformSetGammaRamp(&_glfwLibrary.originalRamp); + if (_glfwLibrary.rampChanged) + _glfwPlatformSetGammaRamp(&_glfwLibrary.originalRamp); CGDisplayModeRelease(_glfwLibrary.NS.desktopMode);
diff --git a/src/gamma.c b/src/gamma.c index 34cb22f..21940b0 100644 --- a/src/gamma.c +++ b/src/gamma.c
@@ -112,5 +112,6 @@ _glfwPlatformSetGammaRamp(ramp); _glfwLibrary.currentRamp = *ramp; + _glfwLibrary.rampChanged = GL_TRUE; }
diff --git a/src/internal.h b/src/internal.h index 6398bdc..681df74 100644 --- a/src/internal.h +++ b/src/internal.h
@@ -245,6 +245,7 @@ GLFWgammaramp currentRamp; GLFWgammaramp originalRamp; int originalRampSize; + GLboolean rampChanged; // This is defined in the current port's platform.h _GLFW_PLATFORM_LIBRARY_WINDOW_STATE;
diff --git a/src/win32_init.c b/src/win32_init.c index 2422dd4..194ff6c 100644 --- a/src/win32_init.c +++ b/src/win32_init.c
@@ -190,7 +190,8 @@ int _glfwPlatformTerminate(void) { // Restore the original gamma ramp - _glfwPlatformSetGammaRamp(&_glfwLibrary.originalRamp); + if (_glfwLibrary.rampChanged) + _glfwPlatformSetGammaRamp(&_glfwLibrary.originalRamp); if (_glfwLibrary.Win32.classAtom) {
diff --git a/src/x11_init.c b/src/x11_init.c index 6ea8035..3543c9f 100644 --- a/src/x11_init.c +++ b/src/x11_init.c
@@ -659,7 +659,7 @@ static void terminateDisplay(void) { - if (_glfwLibrary.originalRampSize) + if (_glfwLibrary.originalRampSize && _glfwLibrary.rampChanged) _glfwPlatformSetGammaRamp(&_glfwLibrary.originalRamp); if (_glfwLibrary.X11.display)