2
0
Эх сурвалжийг харах

Monitor DeviceId setting.
The SDL_WINDOWEVENT_DISPLAY_CHANGED event reports an incorrect DeviceId when changed via command. The resolution sanity check that is applied when changing monitors is moved to the SDL_WINDOWEVENT_MOVED event where DeviceId is properly detected.

OTHGMars 2 жил өмнө
parent
commit
640af98807

+ 4 - 5
Engine/source/windowManager/sdl/sdlWindow.cpp

@@ -646,7 +646,11 @@ void PlatformWindowSDL::_processSDLEvent(SDL_Event &evt)
                break;
             case SDL_WINDOWEVENT_MOVED:
             {
+               S32 oldDisplay = Con::getIntVariable("pref::Video::deviceId", 0);
                _updateMonitorFromMove(evt);
+               // If display device has changed, make sure window params are compatible with the new device.
+               if (oldDisplay != Con::getIntVariable("pref::Video::deviceId", 0))
+                  Con::evaluate("configureCanvas();");
                break;
             }
             case SDL_WINDOWEVENT_RESIZED:
@@ -672,11 +676,6 @@ void PlatformWindowSDL::_processSDLEvent(SDL_Event &evt)
             case SDL_WINDOWEVENT_RESTORED:
                Con::setBoolVariable("pref::Video::isMaximized", false);
                break;
-            case SDL_WINDOWEVENT_DISPLAY_CHANGED:
-               Con::printf("Window moved to display #%d", evt.window.data1);
-               Con::setIntVariable("pref::Video::deviceId", evt.window.data1);
-               Con::evaluate("configureCanvas();");
-               break;
 
             default:
                break;