瀏覽代碼

Properly exit from activity when shutting down (Machine.Release was called twice)

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@8374 8c9fc860-2736-0410-a75d-ab315db34111
negelef 6 年之前
父節點
當前提交
fd7de7f2b4
共有 1 個文件被更改,包括 9 次插入1 次删除
  1. 9 1
      source/Unix.KbdMouse.Mod

+ 9 - 1
source/Unix.KbdMouse.Mod

@@ -8,6 +8,10 @@ MODULE KbdMouse;   (* g.f.	9.7.07 *)
 
 IMPORT Machine, S := SYSTEM, Inputs, Plugins, X11, Displays, XDisplay, Commands, Api:=X11Api, Objects;
 
+#IF COOP THEN
+	IMPORT Environment;
+#END
+
 CONST
 	ML = 0;  MM = 1;  MR = 2;
 	
@@ -29,7 +33,10 @@ TYPE
 		BEGIN {ACTIVE, SAFE,PRIORITY(Objects.High - 1)}
 			LOOP
 				Objects.Sleep( 15 );  PollXQueue;
-			END 
+				#IF COOP THEN
+					IF Environment.status # Environment.Running THEN EXIT END;
+				#END
+			END
 		END Poll;
 
 VAR
@@ -205,6 +212,7 @@ VAR
 						(* shutdown *)
 						Machine.Release( Machine.X11 );
 						TerminateA2;
+						RETURN;
 					(*	Modules.Shutdown( Modules.Reboot ); *)
 					END; 
 			| Api.UnmapNotify: