Browse Source

Always try to set vsync. (#1636)

Use the internal monitor function to correctly get the display for windows.
pull/1648/head
Jeffery Myers 4 years ago
committed by GitHub
parent
commit
3e6f0d7372
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 11 additions and 5 deletions
  1. +11
    -5
      src/core.c

+ 11
- 5
src/core.c View File

@ -1034,7 +1034,13 @@ void ToggleFullscreen(void)
// Store previous window position (in case we exit fullscreen) // Store previous window position (in case we exit fullscreen)
glfwGetWindowPos(CORE.Window.handle, &CORE.Window.position.x, &CORE.Window.position.y); glfwGetWindowPos(CORE.Window.handle, &CORE.Window.position.x, &CORE.Window.position.y);
GLFWmonitor *monitor = glfwGetWindowMonitor(CORE.Window.handle);
int monitorCount = 0;
GLFWmonitor** monitors = glfwGetMonitors(&monitorCount);
int monitorIndex = GetCurrentMonitor();
// use GetCurrentMonitor so we correctly get the display the window is on
GLFWmonitor* monitor = monitorIndex < monitorCount ? monitors[monitorIndex] : NULL;
if (!monitor) if (!monitor)
{ {
TRACELOG(LOG_WARNING, "GLFW: Failed to get monitor"); TRACELOG(LOG_WARNING, "GLFW: Failed to get monitor");
@ -1048,10 +1054,6 @@ void ToggleFullscreen(void)
glfwSetWindowSizeCallback(CORE.Window.handle, NULL); glfwSetWindowSizeCallback(CORE.Window.handle, NULL);
glfwSetWindowMonitor(CORE.Window.handle, monitor, 0, 0, CORE.Window.screen.width, CORE.Window.screen.height, GLFW_DONT_CARE); glfwSetWindowMonitor(CORE.Window.handle, monitor, 0, 0, CORE.Window.screen.width, CORE.Window.screen.height, GLFW_DONT_CARE);
glfwSetWindowSizeCallback(CORE.Window.handle, WindowSizeCallback); 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 else
{ {
@ -1060,6 +1062,10 @@ void ToggleFullscreen(void)
glfwSetWindowSizeCallback(CORE.Window.handle, WindowSizeCallback); 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);
CORE.Window.fullscreen = !CORE.Window.fullscreen; // Toggle fullscreen flag CORE.Window.fullscreen = !CORE.Window.fullscreen; // Toggle fullscreen flag
CORE.Window.flags ^= FLAG_FULLSCREEN_MODE; CORE.Window.flags ^= FLAG_FULLSCREEN_MODE;

Loading…
Cancel
Save