summaryrefslogtreecommitdiff
path: root/packages/fcl-base
diff options
context:
space:
mode:
authormichael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2>2010-11-28 20:15:22 +0000
committermichael <michael@3ad0048d-3df7-0310-abae-a5850022a9f2>2010-11-28 20:15:22 +0000
commitc98ffe65e6eba0d53409b2569bc6083932a06932 (patch)
tree7965cb7d4f2ebbd279a8759f238e8a210ec4c761 /packages/fcl-base
parent63988f1872d4bb78cee1f8ff45273942ae5274c8 (diff)
downloadfpc-c98ffe65e6eba0d53409b2569bc6083932a06932.tar.gz
* Added WaitFor to fix 18044
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@16468 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/fcl-base')
-rw-r--r--packages/fcl-base/src/fptimer.pp11
1 files changed, 10 insertions, 1 deletions
diff --git a/packages/fcl-base/src/fptimer.pp b/packages/fcl-base/src/fptimer.pp
index 3477869858..4d515cdea6 100644
--- a/packages/fcl-base/src/fptimer.pp
+++ b/packages/fcl-base/src/fptimer.pp
@@ -182,6 +182,7 @@ Type
TFPThreadedTimerDriver = Class(TFPTimerDriver)
Private
FThread : TFPTimerThread;
+ Procedure DoNilTimer(Sender : TObject);
Public
Procedure StartTimer; override;
Procedure StopTimer; override;
@@ -242,10 +243,17 @@ end;
TFPThreadedTimerDriver
---------------------------------------------------------------------}
+Procedure TFPThreadedTimerDriver.DoNilTimer(Sender : TObject);
+
+begin
+ FThread:=Nil;
+end;
+
Procedure TFPThreadedTimerDriver.StartTimer;
begin
FThread:=TFPTimerThread.CreateTimerThread(Self);
+ FThread.OnTerminate:=@DoNilTimer;
FThread.Resume;
end;
@@ -253,8 +261,9 @@ Procedure TFPThreadedTimerDriver.StopTimer;
begin
FThread.FTimerDriver:=Nil;
FThread.Terminate; // Will free itself.
- FThread:=Nil;
CheckSynchronize; // make sure thread is not stuck at synchronize call.
+ If Assigned(FThread) then
+ Fthread.WaitFor;
end;