[Haiku-commits] r28907 - haiku/trunk/src/servers/app

axeld at BerliOS axeld at mail.berlios.de
Thu Jan 15 12:33:15 CET 2009


Author: axeld
Date: 2009-01-15 12:33:13 +0100 (Thu, 15 Jan 2009)
New Revision: 28907
ViewCVS: http://svn.berlios.de/viewcvs/haiku?rev=28907&view=rev

Modified:
   haiku/trunk/src/servers/app/Desktop.cpp
Log:
* Moved the screen change to a later point, as the workspace-leaving message
  did arrive after the change; now it's: leave workspace, change screen,
  enter workspace.


Modified: haiku/trunk/src/servers/app/Desktop.cpp
===================================================================
--- haiku/trunk/src/servers/app/Desktop.cpp	2009-01-14 23:26:10 UTC (rev 28906)
+++ haiku/trunk/src/servers/app/Desktop.cpp	2009-01-15 11:33:13 UTC (rev 28907)
@@ -945,14 +945,6 @@
 	int32 previousIndex = fCurrentWorkspace;
 	rgb_color previousColor = fWorkspaces[fCurrentWorkspace].Color();
 	bool movedMouseEventWindow = false;
-	display_mode previousMode, newMode;
-	fVirtualScreen.ScreenAt(0)->GetMode(&previousMode);
-	fVirtualScreen.RestoreConfiguration(*this,
-		fSettings->WorkspacesMessage(index));
-	fVirtualScreen.ScreenAt(0)->GetMode(&newMode);
-	// We only need to invalidate the entire desktop if we changed display modes
-	if (memcmp(&previousMode, &newMode, sizeof(display_mode)))
-		ScreenChanged(fVirtualScreen.ScreenAt(0), false);
 
 	if (fMouseEventWindow != NULL) {
 		if (fMouseEventWindow->IsNormal()) {
@@ -1010,6 +1002,17 @@
 	fPreviousWorkspace = fCurrentWorkspace;
 	fCurrentWorkspace = index;
 
+	// Change the display mode, if needed
+	// TODO: this needs to be done for all screens
+	display_mode previousMode, newMode;
+	fVirtualScreen.ScreenAt(0)->GetMode(&previousMode);
+	fVirtualScreen.RestoreConfiguration(*this,
+		fSettings->WorkspacesMessage(index));
+	fVirtualScreen.ScreenAt(0)->GetMode(&newMode);
+	// We only need to invalidate the entire desktop if we changed display modes
+	if (memcmp(&previousMode, &newMode, sizeof(display_mode)))
+		ScreenChanged(fVirtualScreen.ScreenAt(0), false);
+
 	// show windows, and include them in the changed region - but only
 	// those that were not visible before (or whose position changed)
 




More information about the Haiku-commits mailing list