Open
Description
Tested at 643437f on Windows 11. A non-fullscreen window can switch into borderless and then exclusive fullscreen mode without issue:
#include <SDL.h>
#include <assert.h>
int main(void)
{
int ret = 0;
SDL_Init(SDL_INIT_VIDEO);
SDL_CreateWindowAndRenderer(640, 480, 0, &window, &renderer);
SDL_SetRenderDrawColor(renderer, 0, 0, 128, SDL_ALPHA_OPAQUE);
SDL_RenderFillRect(renderer, NULL);
SDL_RenderPresent(renderer);
SDL_Delay(1000);
ret = SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN_DESKTOP);
assert(ret == 0);
SDL_SetRenderDrawColor(renderer, 128, 0, 0, SDL_ALPHA_OPAQUE);
SDL_RenderFillRect(renderer, NULL);
SDL_RenderPresent(renderer);
SDL_Delay(1000);
ret = SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN);
assert(ret == 0);
SDL_SetRenderDrawColor(renderer, 0, 128, 0, SDL_ALPHA_OPAQUE);
SDL_RenderFillRect(renderer, NULL);
SDL_RenderPresent(renderer);
SDL_Delay(5000);
return 0;
}
If the window is created in borderless mode though, it stays locked to the desktop resolution and the switch to SDL_WINDOW_FULLSCREEN
won't perform a display mode change:
#include <SDL.h>
#include <assert.h>
int main(void)
{
int ret = 0;
SDL_Window *window = NULL;
SDL_Renderer *renderer = NULL;
SDL_Init(SDL_INIT_VIDEO);
SDL_CreateWindowAndRenderer(
640, 480, SDL_WINDOW_FULLSCREEN_DESKTOP, &window, &renderer
);
SDL_SetRenderDrawColor(renderer, 0, 0, 128, SDL_ALPHA_OPAQUE);
SDL_RenderFillRect(renderer, NULL);
SDL_RenderPresent(renderer);
SDL_Delay(1000);
/// Even switching into windowed mode beforehand does not help.
// SDL_SetWindowFullscreen(window, 0);
// SDL_Delay(2000);
ret = SDL_SetWindowFullscreen(window, SDL_WINDOW_FULLSCREEN); // ← has no effect?
assert(ret == 0);
SDL_SetRenderDrawColor(renderer, 128, 0, 0, SDL_ALPHA_OPAQUE);
SDL_RenderFillRect(renderer, NULL);
SDL_RenderPresent(renderer);
SDL_Delay(1000);
SDL_Quit();
return 0;
}
The equivalent SDL 3 code also works without issue.
Metadata
Metadata
Assignees
Labels
No labels