diff --git a/src/servers/app/Desktop.cpp b/src/servers/app/Desktop.cpp index 73cda3b367..0fd51c3d3f 100644 --- a/src/servers/app/Desktop.cpp +++ b/src/servers/app/Desktop.cpp @@ -1147,6 +1147,7 @@ Desktop::ScreenChanged(Screen* screen, bool makeDefault) // TODO: currently ignores the screen argument! for (Window* window = fAllWindows.FirstWindow(); window != NULL; window = window->NextWindow(kAllWindowList)) { + window->ServerWindow()->ScreenChanged(&update); window->ServerWindow()->SendMessageToClient(&update); } diff --git a/src/servers/app/ServerWindow.cpp b/src/servers/app/ServerWindow.cpp index 0db7cb6617..e225f6ba31 100644 --- a/src/servers/app/ServerWindow.cpp +++ b/src/servers/app/ServerWindow.cpp @@ -153,7 +153,7 @@ public: BRect old_window_frame; direct_buffer_info *buffer_info; - + bool full_screen; private: sem_id fSem; sem_id fAcknowledgeSem; @@ -165,6 +165,7 @@ private: DirectWindowData::DirectWindowData() : buffer_info(NULL), + full_screen(false), fSem(-1), fAcknowledgeSem(-1), fBufferArea(-1), @@ -3537,6 +3538,24 @@ ServerWindow::_MessageLooper() } +void +ServerWindow::ScreenChanged(const BMessage *message) +{ + // TODO: execute the stop notification earlier + //HandleDirectConnection(B_DIRECT_STOP); + SendMessageToClient(message); + if (fDirectWindowData != NULL && fDirectWindowData->full_screen) { + BRect screenFrame = fDesktop->ActiveScreen()->Frame(); + fDesktop->ResizeWindowBy(fWindow, + screenFrame.Width() - fWindow->Frame().Width(), + screenFrame.Height() - fWindow->Frame().Height()); + } + + //HandleDirectConnection(B_DIRECT_START | B_BUFFER_RESET, + //B_SCREEN_CHANGED); +} + + status_t ServerWindow::SendMessageToClient(const BMessage* msg, int32 target) const { @@ -3788,6 +3807,7 @@ ServerWindow::_DirectWindowSetFullScreen(bool enable) fDesktop->HWInterface()->SetCursorVisible(true); } + fDirectWindowData->full_screen = enable; fDesktop->SetWindowFeel(fWindow, enable ? kWindowScreenFeel : fDirectWindowFeel); } diff --git a/src/servers/app/ServerWindow.h b/src/servers/app/ServerWindow.h index 50a16993e3..db16a0b368 100644 --- a/src/servers/app/ServerWindow.h +++ b/src/servers/app/ServerWindow.h @@ -72,6 +72,7 @@ public: const BMessenger& HandlerMessenger() const { return fHandlerMessenger; } + void ScreenChanged(const BMessage *screenChangedMessage); status_t SendMessageToClient(const BMessage* msg, int32 target = B_NULL_TOKEN) const;