diff --git a/rtl/amicommon/tthread.inc b/rtl/amicommon/tthread.inc index 302201ae12..dc3cc5ed0c 100644 --- a/rtl/amicommon/tthread.inc +++ b/rtl/amicommon/tthread.inc @@ -116,6 +116,7 @@ end; procedure TThread.Terminate; begin FTerminated := True; + TerminatedSet; end; function TThread.WaitFor: Integer; diff --git a/rtl/atari/tthread.inc b/rtl/atari/tthread.inc index 24e7e37f19..17d9d92735 100644 --- a/rtl/atari/tthread.inc +++ b/rtl/atari/tthread.inc @@ -74,6 +74,7 @@ end; procedure TThread.Terminate; begin + TerminatedSet; end; diff --git a/rtl/beos/tthread.inc b/rtl/beos/tthread.inc index a0fb61e1fc..3ab4a4b5a2 100644 --- a/rtl/beos/tthread.inc +++ b/rtl/beos/tthread.inc @@ -274,6 +274,7 @@ end; procedure TThread.Terminate; begin FTerminated := True; + TerminatedSet; end; function TThread.WaitFor: Integer; @@ -560,6 +561,7 @@ end; procedure TThread.Terminate; begin FTerminated := True; + TerminatedSet; end; function TThread.WaitFor: Integer; diff --git a/rtl/embedded/tthread.inc b/rtl/embedded/tthread.inc index d47e8823f9..6c18542b26 100644 --- a/rtl/embedded/tthread.inc +++ b/rtl/embedded/tthread.inc @@ -100,6 +100,7 @@ end; procedure TThread.Terminate; begin FTerminated := true; + TerminatedSet; end; diff --git a/rtl/gba/tthread.inc b/rtl/gba/tthread.inc index d47e8823f9..71df157744 100644 --- a/rtl/gba/tthread.inc +++ b/rtl/gba/tthread.inc @@ -99,7 +99,8 @@ end; procedure TThread.Terminate; begin - FTerminated := true; + FTerminated := true; + TerminatedSet; end; diff --git a/rtl/go32v2/tthread.inc b/rtl/go32v2/tthread.inc index 24e7e37f19..17d9d92735 100644 --- a/rtl/go32v2/tthread.inc +++ b/rtl/go32v2/tthread.inc @@ -74,6 +74,7 @@ end; procedure TThread.Terminate; begin + TerminatedSet; end; diff --git a/rtl/macos/tthread.inc b/rtl/macos/tthread.inc index 24e7e37f19..17d9d92735 100644 --- a/rtl/macos/tthread.inc +++ b/rtl/macos/tthread.inc @@ -74,6 +74,7 @@ end; procedure TThread.Terminate; begin + TerminatedSet; end; diff --git a/rtl/msdos/tthread.inc b/rtl/msdos/tthread.inc index 24e7e37f19..17d9d92735 100644 --- a/rtl/msdos/tthread.inc +++ b/rtl/msdos/tthread.inc @@ -74,6 +74,7 @@ end; procedure TThread.Terminate; begin + TerminatedSet; end; diff --git a/rtl/nativent/tthread.inc b/rtl/nativent/tthread.inc index 0fa6f20cad..018e763d2c 100644 --- a/rtl/nativent/tthread.inc +++ b/rtl/nativent/tthread.inc @@ -48,6 +48,7 @@ end; procedure TThread.Terminate; begin FTerminated := True; + TerminatedSet; end; function TThread.WaitFor: Integer; diff --git a/rtl/nds/tthread.inc b/rtl/nds/tthread.inc index 18f1547108..fc5096ebd2 100644 --- a/rtl/nds/tthread.inc +++ b/rtl/nds/tthread.inc @@ -99,7 +99,8 @@ end; procedure TThread.Terminate; begin - FTerminated := true; + FTerminated := true; + TerminatedSet; end; diff --git a/rtl/netware/tthread.inc b/rtl/netware/tthread.inc index 20a26afdb6..679638f1f9 100644 --- a/rtl/netware/tthread.inc +++ b/rtl/netware/tthread.inc @@ -219,6 +219,7 @@ end; procedure TThread.Terminate; begin FTerminated := True; + TerminatedSet; ThreadSwitch; end; diff --git a/rtl/netwlibc/tthread.inc b/rtl/netwlibc/tthread.inc index 0ac8e4a168..5b54483bcf 100644 --- a/rtl/netwlibc/tthread.inc +++ b/rtl/netwlibc/tthread.inc @@ -364,6 +364,7 @@ end; procedure TThread.Terminate; begin FTerminated := True; + TerminatedSet; end; function TThread.WaitFor: Integer; diff --git a/rtl/objpas/classes/classes.inc b/rtl/objpas/classes/classes.inc index 70d47ba6d5..3ed9b8cdc6 100644 --- a/rtl/objpas/classes/classes.inc +++ b/rtl/objpas/classes/classes.inc @@ -274,6 +274,13 @@ begin GetSuspended:=FSuspended; end; +Procedure TThread.TerminatedSet; + +begin + // Empty, must be overridden. +end; + + procedure TThread.AfterConstruction; begin diff --git a/rtl/objpas/classes/classesh.inc b/rtl/objpas/classes/classesh.inc index 310adaf765..4c3cb36349 100644 --- a/rtl/objpas/classes/classesh.inc +++ b/rtl/objpas/classes/classesh.inc @@ -1752,6 +1752,7 @@ type protected FThreadID: TThreadID; // someone might need it for pthread_* calls procedure DoTerminate; virtual; + procedure TerminatedSet; virtual; procedure Execute; virtual; abstract; procedure Synchronize(AMethod: TThreadMethod); procedure Queue(aMethod: TThreadMethod); @@ -1840,7 +1841,7 @@ type property ThreadID: TThreadID read FThreadID; property OnTerminate: TNotifyEvent read FOnTerminate write FOnTerminate; property FatalException: TObject read FFatalException; - end; + end; { TComponent class } diff --git a/rtl/os2/tthread.inc b/rtl/os2/tthread.inc index 28a4922942..0c41028183 100644 --- a/rtl/os2/tthread.inc +++ b/rtl/os2/tthread.inc @@ -212,7 +212,8 @@ end; procedure TThread.Terminate; begin - FTerminated := true; + FTerminated := true; + TerminatedSet; end; diff --git a/rtl/symbian/tthread.inc b/rtl/symbian/tthread.inc index d47e8823f9..71df157744 100644 --- a/rtl/symbian/tthread.inc +++ b/rtl/symbian/tthread.inc @@ -99,7 +99,8 @@ end; procedure TThread.Terminate; begin - FTerminated := true; + FTerminated := true; + TerminatedSet; end; diff --git a/rtl/unix/tthread.inc b/rtl/unix/tthread.inc index e58977b48a..984dd46a61 100644 --- a/rtl/unix/tthread.inc +++ b/rtl/unix/tthread.inc @@ -253,6 +253,7 @@ end; procedure TThread.Terminate; begin FTerminated := True; + TerminatedSet; end; function TThread.WaitFor: Integer; diff --git a/rtl/wii/tthread.inc b/rtl/wii/tthread.inc index d47e8823f9..6c18542b26 100644 --- a/rtl/wii/tthread.inc +++ b/rtl/wii/tthread.inc @@ -100,6 +100,7 @@ end; procedure TThread.Terminate; begin FTerminated := true; + TerminatedSet; end; diff --git a/rtl/win/tthread.inc b/rtl/win/tthread.inc index d7cdbaf246..9e7c039ff5 100644 --- a/rtl/win/tthread.inc +++ b/rtl/win/tthread.inc @@ -95,6 +95,7 @@ end; procedure TThread.Terminate; begin FTerminated := True; + TerminatedSet; end; function TThread.WaitFor: Integer; diff --git a/rtl/win16/tthread.inc b/rtl/win16/tthread.inc index 24e7e37f19..b46781cf55 100644 --- a/rtl/win16/tthread.inc +++ b/rtl/win16/tthread.inc @@ -74,6 +74,7 @@ end; procedure TThread.Terminate; begin +TerminatedSet; end;