|
|
@ -313,6 +313,8 @@ static unsigned int displayWidth, displayHeight;// Display width and height (mon |
|
|
|
static int screenWidth, screenHeight; // Screen width and height (used render area) |
|
|
|
static int renderWidth, renderHeight; // Framebuffer width and height (render area, including black bars if required) |
|
|
|
static int currentWidth, currentHeight; // Current render width and height, it could change on BeginTextureMode() |
|
|
|
static int windowLeftPos, windowTopPos; |
|
|
|
static int requireVsync = 0; |
|
|
|
static int renderOffsetX = 0; // Offset X from render area (must be divided by 2) |
|
|
|
static int renderOffsetY = 0; // Offset Y from render area (must be divided by 2) |
|
|
|
static bool fullscreen = false; // Fullscreen mode (useful only for PLATFORM_DESKTOP) |
|
|
@ -855,10 +857,24 @@ void ToggleFullscreen(void) |
|
|
|
{ |
|
|
|
#if defined(PLATFORM_DESKTOP) |
|
|
|
fullscreen = !fullscreen; // Toggle fullscreen flag |
|
|
|
requireVsync = true; |
|
|
|
|
|
|
|
// NOTE: glfwSetWindowMonitor() doesn't work properly (bugs) |
|
|
|
if (fullscreen) glfwSetWindowMonitor(window, glfwGetPrimaryMonitor(), 0, 0, screenWidth, screenHeight, GLFW_DONT_CARE); |
|
|
|
else glfwSetWindowMonitor(window, NULL, 0, 0, screenWidth, screenHeight, GLFW_DONT_CARE); |
|
|
|
if (fullscreen) { |
|
|
|
glfwGetWindowPos(window, &windowLeftPos, &windowTopPos); |
|
|
|
|
|
|
|
GLFWmonitor *monitor = glfwGetPrimaryMonitor(); |
|
|
|
if (!monitor) |
|
|
|
{ |
|
|
|
TraceLog(LOG_WARNING, "Failed to get monitor"); |
|
|
|
glfwSetWindowMonitor(window, glfwGetPrimaryMonitor(), 0, 0, screenWidth, screenHeight, GLFW_DONT_CARE); |
|
|
|
return; |
|
|
|
} |
|
|
|
|
|
|
|
const GLFWvidmode *mode = glfwGetVideoMode(monitor); |
|
|
|
glfwSetWindowMonitor(window, glfwGetPrimaryMonitor(), 0, 0, screenWidth, screenHeight, mode->refreshRate); |
|
|
|
} |
|
|
|
else glfwSetWindowMonitor(window, NULL, windowLeftPos, windowTopPos, screenWidth, screenHeight, GLFW_DONT_CARE); |
|
|
|
#endif |
|
|
|
|
|
|
|
#if defined(PLATFORM_ANDROID) || defined(PLATFORM_RPI) |
|
|
@ -1759,6 +1775,7 @@ Color Fade(Color color, float alpha) |
|
|
|
void SetConfigFlags(unsigned int flags) |
|
|
|
{ |
|
|
|
configFlags = flags; |
|
|
|
requireVsync = true; |
|
|
|
|
|
|
|
if (configFlags & FLAG_FULLSCREEN_MODE) fullscreen = true; |
|
|
|
if (configFlags & FLAG_WINDOW_ALWAYS_RUN) alwaysRun = true; |
|
|
@ -2697,6 +2714,13 @@ static bool InitGraphicsDevice(int width, int height) |
|
|
|
|
|
|
|
if (fullscreen) |
|
|
|
{ |
|
|
|
// remember center for switchinging from fullscreen to window |
|
|
|
windowLeftPos = displayWidth/2 - screenWidth/2; |
|
|
|
windowTopPos = displayHeight/2 - screenHeight/2; |
|
|
|
|
|
|
|
if (windowLeftPos < 0) windowLeftPos = 0; |
|
|
|
if (windowTopPos < 0) windowTopPos = 0; |
|
|
|
|
|
|
|
// Obtain recommended displayWidth/displayHeight from a valid videomode for the monitor |
|
|
|
int count = 0; |
|
|
|
const GLFWvidmode *modes = glfwGetVideoModes(glfwGetPrimaryMonitor(), &count); |
|
|
@ -3794,6 +3818,11 @@ static void PollInputEvents(void) |
|
|
|
static void SwapBuffers(void) |
|
|
|
{ |
|
|
|
#if defined(PLATFORM_DESKTOP) || defined(PLATFORM_WEB) |
|
|
|
if (requireVsync) { |
|
|
|
glfwMakeContextCurrent(window); |
|
|
|
glfwSwapInterval((configFlags & FLAG_VSYNC_HINT) != 0); |
|
|
|
requireVsync = false; |
|
|
|
} |
|
|
|
glfwSwapBuffers(window); |
|
|
|
#endif |
|
|
|
|
|
|
|