summaryrefslogtreecommitdiffhomepage
path: root/src/core.c
diff options
context:
space:
mode:
authorhristo <[email protected]>2021-02-07 21:55:27 +0200
committerGitHub <[email protected]>2021-02-07 20:55:27 +0100
commit70965f20d5249d9302a4d56c6b8ebafebc834e22 (patch)
treefab9731b75a9322ecbd49ed02b90eaa858b26d8d /src/core.c
parent67206a54153e4292fd706c98b8024df16b0f5c97 (diff)
downloadraylib-70965f20d5249d9302a4d56c6b8ebafebc834e22.tar.gz
raylib-70965f20d5249d9302a4d56c6b8ebafebc834e22.zip
Disabling WindowSizeCallback around fullscreen toggle. (#1480)
* Disabling WindowSizeCallback around fullscreen toggle. #1294 fixed the issue that toggle fullscreen changes the screen size because of the WindowSizeCallback. The proposed edit by @raysan5 was to comment out WindowSizeCallback which I essentially simplified to disable the callback around the set window monitor functions. The developers using the ToggleFullscreen function should be aware that they need to size the screen correctly on that same frame. Otherwise they should check if fullscreen and size properly using the GetMonitorWidth and GetMonitorHeight functions. * Update core.c Fix issue from merge
Diffstat (limited to 'src/core.c')
-rw-r--r--src/core.c11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/core.c b/src/core.c
index 1cc2bb87..0f8e5f65 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;