From 89eb4cd6c992af20ed413de6bb2bd50fdb910647 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 2 Feb 2007 16:20:16 +0000 Subject: [PATCH] Now checks the screen mode to be set if it is already the active one (and do nothing if that's the case). Accidently this also fixes bug #1010. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20049 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/servers/app/ServerApp.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/servers/app/ServerApp.cpp b/src/servers/app/ServerApp.cpp index fddaa83c2d..561e716cb9 100644 --- a/src/servers/app/ServerApp.cpp +++ b/src/servers/app/ServerApp.cpp @@ -2062,7 +2062,7 @@ ServerApp::_DispatchMessage(int32 code, BPrivate::LinkReceiver& link) // 1) screen_id // 2) workspace index // 3) display_mode to set - // 4) 'makedefault' boolean + // 4) 'makeDefault' boolean // TODO: See above: workspaces support, etc. screen_id id; @@ -2078,11 +2078,16 @@ ServerApp::_DispatchMessage(int32 code, BPrivate::LinkReceiver& link) status_t status = link.Read(&makeDefault); if (status == B_OK && fDesktop->LockAllWindows()) { - status = fDesktop->ScreenAt(0)->SetMode(mode, makeDefault); - if (status == B_OK) { - gInputManager->UpdateScreenBounds(fDesktop->ScreenAt(0)->Frame()); - fDesktop->ScreenChanged(fDesktop->ScreenAt(0), makeDefault); - } + display_mode oldMode; + fDesktop->ScreenAt(0)->GetMode(&oldMode); + if (memcmp(&oldMode, &mode, sizeof(display_mode))) { + status = fDesktop->ScreenAt(0)->SetMode(mode, makeDefault); + if (status == B_OK) { + gInputManager->UpdateScreenBounds(fDesktop->ScreenAt(0)->Frame()); + fDesktop->ScreenChanged(fDesktop->ScreenAt(0), makeDefault); + } + } else + status = B_OK; fDesktop->UnlockAllWindows(); } else status = B_ERROR;