diff --git a/src/servers/app/Desktop.cpp b/src/servers/app/Desktop.cpp index 646ea07c20..1540bc3583 100644 --- a/src/servers/app/Desktop.cpp +++ b/src/servers/app/Desktop.cpp @@ -1099,6 +1099,9 @@ Desktop::HideWindow(Window* window) void Desktop::MoveWindowBy(Window* window, float x, float y, int32 workspace) { + if (x == 0 && y == 0) + return; + if (!LockAllWindows()) return; @@ -1173,6 +1176,9 @@ Desktop::MoveWindowBy(Window* window, float x, float y, int32 workspace) void Desktop::ResizeWindowBy(Window* window, float x, float y) { + if (x == 0 && y == 0) + return; + if (!LockAllWindows()) return; diff --git a/src/servers/app/ServerWindow.cpp b/src/servers/app/ServerWindow.cpp index 641791d13f..e6e8a139d8 100644 --- a/src/servers/app/ServerWindow.cpp +++ b/src/servers/app/ServerWindow.cpp @@ -3561,13 +3561,16 @@ ServerWindow::_MessageNeedsAllWindowsLocked(uint32 code) const void ServerWindow::_ResizeToFullScreen() { - const Screen *screen = fWindow->Screen(); - if (screen == NULL) { - return; - // the window isn't yet attached to a screen - } + BRect screenFrame; - BRect screenFrame = screen->Frame(); + { + AutoReadLocker _(fDesktop->ScreenLocker()); + const Screen* screen = fWindow->Screen(); + if (screen == NULL) + return; + + screenFrame = fWindow->Screen()->Frame(); + } fDesktop->MoveWindowBy(fWindow, screenFrame.left - fWindow->Frame().left, @@ -3611,7 +3614,6 @@ ServerWindow::_DirectWindowSetFullScreen(bool enable) fDesktop->HWInterface()->SetCursorVisible(false); fDirectWindowInfo->EnableFullScreen(fWindow->Frame(), fWindow->Feel()); - _ResizeToFullScreen(); } else { const BRect& originalFrame = fDirectWindowInfo->OriginalFrame();