diff --git a/src/core.c b/src/core.c index 1cc2bb87d..0f8e5f651 100644 --- a/src/core.c +++ b/src/core.c @@ -1038,18 +1038,27 @@ void ToggleFullscreen(void) if (!monitor) { TRACELOG(LOG_WARNING, "GLFW: Failed to get monitor"); + glfwSetWindowSizeCallback(CORE.Window.handle, NULL); glfwSetWindowMonitor(CORE.Window.handle, glfwGetPrimaryMonitor(), 0, 0, CORE.Window.screen.width, CORE.Window.screen.height, GLFW_DONT_CARE); + glfwSetWindowSizeCallback(CORE.Window.handle, WindowSizeCallback); return; } const GLFWvidmode *mode = glfwGetVideoMode(monitor); + glfwSetWindowSizeCallback(CORE.Window.handle, NULL); glfwSetWindowMonitor(CORE.Window.handle, monitor, 0, 0, CORE.Window.screen.width, CORE.Window.screen.height, mode->refreshRate); + glfwSetWindowSizeCallback(CORE.Window.handle, WindowSizeCallback); // Try to enable GPU V-Sync, so frames are limited to screen refresh rate (60Hz -> 60 FPS) // NOTE: V-Sync can be enabled by graphic driver configuration if (CORE.Window.flags & FLAG_VSYNC_HINT) glfwSwapInterval(1); } - else glfwSetWindowMonitor(CORE.Window.handle, NULL, CORE.Window.position.x, CORE.Window.position.y, CORE.Window.screen.width, CORE.Window.screen.height, GLFW_DONT_CARE); + else + { + glfwSetWindowSizeCallback(CORE.Window.handle, NULL); + glfwSetWindowMonitor(CORE.Window.handle, NULL, CORE.Window.position.x, CORE.Window.position.y, CORE.Window.screen.width, CORE.Window.screen.height, GLFW_DONT_CARE); + glfwSetWindowSizeCallback(CORE.Window.handle, WindowSizeCallback); + } CORE.Window.fullscreen = !CORE.Window.fullscreen; // Toggle fullscreen flag CORE.Window.flags ^= FLAG_FULLSCREEN_MODE;