Przeglądaj źródła

Never take Manager lock before sequencer lock (Window/Component lock is the same).

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7208 8c9fc860-2736-0410-a75d-ab315db34111
skoster 8 lat temu
rodzic
commit
eb87bed2b3
1 zmienionych plików z 4 dodań i 1 usunięć
  1. 4 1
      source/WMNavigate.Mod

+ 4 - 1
source/WMNavigate.Mod

@@ -1778,9 +1778,12 @@ BEGIN {EXCLUSIVE}
 			SetIsVisibleNavigation(FALSE);
 		END;
 		manager.SetWindowSize(window, newWidth, newHeight);
+		(* potentially another thread has the sequencer lock of this window and might require the manager lock. Lock order: never take manager lock before sequencer lock *)
+		manager.lock.ReleaseWrite;
 		window.Resized(newWidth, newHeight);
+	ELSE
+		manager.lock.ReleaseWrite;
 	END;
-	manager.lock.ReleaseWrite;
 END ToggleFullscreen;
 
 PROCEDURE MoveWindow*(context : Commands.Context);