Using Ubuntu 22 with SDL2 Qt5, if I set full screen mode while using any window manager, I do get full screen. However, if I launch with only X11, the max window size is not set, and the position is unknown. This manifests as a non-resizable SDL window with the original pixel dimensions of the console. Changing/flipping the fullscreen mode does nothing, as you will not get a resize event without a window manager.
My fix in Qt ConsoleWindow.cpp is to ask SDL for its current device height and width (doesn't need a window id, because we don't have a valid one yet) and then set the origin and dimension to device extents. (This assumes we have one device.) If I am not fullscreen, I use whatever was previously saved in the config. Paste this code in the ./drivers/Qt/ConsoleWindow.cpp
file over where it gets the window size from the config.
SDL_DisplayMode mode; int err = SDL_GetCurrentDisplayMode(0,&mode); g_config->getOption( "SDL.Fullscreen", &setFullScreen ); if( setFullScreen ) { xWinPos = 0; yWinPos = 0; xWinSize = mode.w; yWinSize = mode.h; } else { g_config->getOption( "SDL.WinPosX" , &xWinPos ); g_config->getOption( "SDL.WinPosY" , &yWinPos ); g_config->getOption( "SDL.WinSizeX", &xWinSize ); g_config->getOption( "SDL.WinSizeY", &yWinSize ); } if ( (xWinSize >= 256) && (yWinSize >= 224) ) ...
this allows me to directly launch fceux with startx
No comments:
Post a Comment