SDL: Do not reset window size when engines update rendering surface
This change allows: * Engines to update their target rendering surface/size and pixel format with the backend multiple times during gameplay; * Users to resize the ScummVM window without having it reset size/position every time an engine updates its target surface format; * Conversions/scaling to continue to run efficiently in hardware, instead of requiring engines to pick their maximum possible output format once and upscale inefficiently in software; * The window to reset size once when an engine calls to set its initial output size, and to reset again once ScummVM returns to the launcher. This is relevant for at least SCI32 and DreamWeb engines, which perform graphics mode switches during games.
This commit is contained in:
parent
83436e685f
commit
ebe6c40a6a
6 changed files with 58 additions and 18 deletions
|
@ -509,16 +509,8 @@ bool OpenGLSdlGraphicsManager::setupMode(uint width, uint height) {
|
|||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MAJOR_VERSION, _glContextMajor);
|
||||
SDL_GL_SetAttribute(SDL_GL_CONTEXT_MINOR_VERSION, _glContextMinor);
|
||||
|
||||
if (!_window->createOrUpdateWindow(width, height, flags)) {
|
||||
// We treat fullscreen requests as a "hint" for now. This means in
|
||||
// case it is not available we simply ignore it.
|
||||
if (_wantsFullScreen) {
|
||||
_window->createOrUpdateWindow(width, height, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);
|
||||
}
|
||||
|
||||
if (!_window->getSDLWindow()) {
|
||||
return false;
|
||||
}
|
||||
if (!createOrUpdateWindow(width, height, flags)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
_glContext = SDL_GL_CreateContext(_window->getSDLWindow());
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue