| Summary: | SDL_SetWindowFullscreen call on existing window results in error under Wayland backend: That operation is not supported | ||
|---|---|---|---|
| Product: | SDL | Reporter: | sebby2k <shopper2k> |
| Component: | video | Assignee: | Gabriel Jacobo <gabomdq> |
| Status: | ASSIGNED --- | QA Contact: | Sam Lantinga <slouken> |
| Severity: | normal | ||
| Priority: | P2 | CC: | dos |
| Version: | HG 2.1 | ||
| Hardware: | x86_64 | ||
| OS: | Linux | ||
That seems like something already fixed by adding the xdg-shell support. |
= Description This occurs when trying to reconfigure previously opened window to make it full-screen. Relevant code is listed below. = Output QUAKE ERROR: Couldn't set fullscreen state mode: That operation is not supported = Environment Fedora 25 running Gnome Wayland session. Name : gnome-shell Arch : x86_64 Epoch : 0 Version : 3.22.2 Release : 2.fc25 Name : SDL2 Arch : x86_64 Epoch : 0 Version : 2.0.5 Release : 2.fc25 == Code draw_context variable contains existing SDL_Window* so first part which creates window is skipped. if (!draw_context) { flags = SDL_WINDOW_HIDDEN; if (vid_borderless.value) flags |= SDL_WINDOW_BORDERLESS; draw_context = SDL_CreateWindow (caption, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, flags); if (!draw_context) Sys_Error ("Couldn't create window"); SDL_VERSION(&sys_wm_info.version); if(!SDL_GetWindowWMInfo(draw_context,&sys_wm_info)) Sys_Error ("Couldn't get window wm info"); } /* Ensure the window is not fullscreen */ if (VID_GetFullscreen ()) { if (SDL_SetWindowFullscreen (draw_context, 0) != 0) Sys_Error("Couldn't set fullscreen state mode"); } /* Set window size and display mode */ SDL_SetWindowSize (draw_context, width, height); SDL_SetWindowPosition (draw_context, SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED); if (SDL_SetWindowDisplayMode (draw_context, VID_SDL2_GetDisplayMode(width, height, bpp)) != 0) Sys_Error ("Couldn't set display mode for fullscreen: %s", SDL_GetError()); SDL_SetWindowBordered (draw_context, vid_borderless.value ? SDL_FALSE : SDL_TRUE); /* Make window fullscreen if needed, and show the window */ if (fullscreen) { if (SDL_SetWindowFullscreen (draw_context, SDL_WINDOW_FULLSCREEN) != 0) Sys_Error ("Couldn't set fullscreen state mode: %s", SDL_GetError()); } SDL_ShowWindow (draw_context);