From 44b332f82acf8e139c6e8a7b173f1b0598efb4ab Mon Sep 17 00:00:00 2001 From: florian Date: Fri, 25 Feb 2005 21:41:09 +0000 Subject: [PATCH] * generic tthread.synchronize * delphi compatible wakemainthread --- rtl/darwin/tthread.inc | 10 ++++---- rtl/freebsd/tthread.inc | 38 ++++-------------------------- rtl/go32v2/tthread.inc | 12 ++++------ rtl/linux/tthread.inc | 15 ++++-------- rtl/morphos/tthread.inc | 11 ++++----- rtl/netbsd/tthread.inc | 20 ++++------------ rtl/netware/tthread.inc | 19 ++++----------- rtl/netwlibc/tthread.inc | 9 ++++---- rtl/openbsd/tthread.inc | 20 ++++------------ rtl/os2/tthread.inc | 11 ++++----- rtl/win32/tthread.inc | 50 ++++------------------------------------ 11 files changed, 55 insertions(+), 160 deletions(-) diff --git a/rtl/darwin/tthread.inc b/rtl/darwin/tthread.inc index 6106aa428a..21fa2c7e4e 100644 --- a/rtl/darwin/tthread.inc +++ b/rtl/darwin/tthread.inc @@ -279,10 +279,6 @@ begin Result := I; end; -procedure TThread.Synchronize(Method: TThreadMethod); -begin -{$TODO someone with more clue of the GUI stuff will have to do this} -end; procedure TThread.SetPriority(Value: TThreadPriority); begin @@ -291,7 +287,11 @@ end; { $Log$ - Revision 1.4 2005-02-14 17:13:22 peter + Revision 1.5 2005-02-25 21:41:09 florian + * generic tthread.synchronize + * delphi compatible wakemainthread + + Revision 1.4 2005/02/14 17:13:22 peter * truncate log } diff --git a/rtl/freebsd/tthread.inc b/rtl/freebsd/tthread.inc index 1c386bd637..af0cad5163 100644 --- a/rtl/freebsd/tthread.inc +++ b/rtl/freebsd/tthread.inc @@ -243,16 +243,6 @@ begin end; -procedure TThread.Synchronize(Method: TThreadMethod); -begin - FSynchronizeException := nil; - FMethod := Method; -{ SendMessage(ThreadWindow, CM_EXECPROC, 0, Longint(Self)); } - if Assigned(FSynchronizeException) then - raise FSynchronizeException; -end; - - procedure TThread.SetSuspended(Value: Boolean); begin if Value <> FSuspended then @@ -593,28 +583,6 @@ begin Result := I; end; -procedure TThread.Synchronize(Method: TThreadMethod); -var - LocalSyncException: Exception; -begin - if SynchronizeMethodProc = nil then - { raise some error? } - exit; - rtleventsync(trtlmethod(method),synchronizemethodproc); -{ - EnterCriticalSection(SynchronizeCritSect); - SynchronizeMethod := Method; - SynchronizeException := nil; - SynchronizeMethodProc; - // wait infinitely - RtlEventWaitFor(ExecuteEvent); - SynchronizeMethod := nil; - LocalSyncException := SynchronizeException; - LeaveCriticalSection(SynchronizeCritSect); - if LocalSyncException <> nil then - raise LocalSyncException; -} -end; procedure TThread.SetPriority(Value: TThreadPriority); begin @@ -624,7 +592,11 @@ end; { $Log$ - Revision 1.13 2005-02-14 17:13:22 peter + Revision 1.14 2005-02-25 21:41:09 florian + * generic tthread.synchronize + * delphi compatible wakemainthread + + Revision 1.13 2005/02/14 17:13:22 peter * truncate log Revision 1.12 2005/02/06 12:16:52 peter diff --git a/rtl/go32v2/tthread.inc b/rtl/go32v2/tthread.inc index 2471c68110..8fad4eaf77 100644 --- a/rtl/go32v2/tthread.inc +++ b/rtl/go32v2/tthread.inc @@ -47,12 +47,6 @@ begin end; -procedure TThread.Synchronize(Method: TThreadMethod); - -begin -end; - - constructor TThread.Create(CreateSuspended: Boolean); begin @@ -93,7 +87,11 @@ end; { $Log$ - Revision 1.2 2005-02-14 17:13:22 peter + Revision 1.3 2005-02-25 21:41:09 florian + * generic tthread.synchronize + * delphi compatible wakemainthread + + Revision 1.2 2005/02/14 17:13:22 peter * truncate log } diff --git a/rtl/linux/tthread.inc b/rtl/linux/tthread.inc index 86404ec144..0781ec4d35 100644 --- a/rtl/linux/tthread.inc +++ b/rtl/linux/tthread.inc @@ -313,15 +313,6 @@ begin Result := I; end; -procedure TThread.Synchronize(Method: TThreadMethod); -var - LocalSyncException: Exception; -begin - if SynchronizeMethodProc = nil then - { raise some error? } - exit; - rtleventsync(trtlmethod(method),synchronizemethodproc); -end; procedure TThread.SetPriority(Value: TThreadPriority); begin @@ -330,7 +321,11 @@ end; { $Log$ - Revision 1.12 2005-02-14 17:13:30 peter + Revision 1.13 2005-02-25 21:41:09 florian + * generic tthread.synchronize + * delphi compatible wakemainthread + + Revision 1.12 2005/02/14 17:13:30 peter * truncate log Revision 1.11 2005/02/06 11:20:52 peter diff --git a/rtl/morphos/tthread.inc b/rtl/morphos/tthread.inc index fcee073f38..3ccc63dcc3 100644 --- a/rtl/morphos/tthread.inc +++ b/rtl/morphos/tthread.inc @@ -92,11 +92,6 @@ begin end; -procedure TThread.Synchronize(Method: TThreadMethod); -begin -end; - - function ThreadProc(Args: pointer): Integer; cdecl; var FreeThread: Boolean; @@ -183,7 +178,11 @@ end; { $Log$ - Revision 1.2 2005-02-14 17:13:30 peter + Revision 1.3 2005-02-25 21:41:09 florian + * generic tthread.synchronize + * delphi compatible wakemainthread + + Revision 1.2 2005/02/14 17:13:30 peter * truncate log } diff --git a/rtl/netbsd/tthread.inc b/rtl/netbsd/tthread.inc index 643f44d0ce..a044e16e42 100644 --- a/rtl/netbsd/tthread.inc +++ b/rtl/netbsd/tthread.inc @@ -243,16 +243,6 @@ begin end; -procedure TThread.Synchronize(Method: TThreadMethod); -begin - FSynchronizeException := nil; - FMethod := Method; -{ SendMessage(ThreadWindow, CM_EXECPROC, 0, Longint(Self)); } - if Assigned(FSynchronizeException) then - raise FSynchronizeException; -end; - - procedure TThread.SetSuspended(Value: Boolean); begin if Value <> FSuspended then @@ -593,10 +583,6 @@ begin Result := I; end; -procedure TThread.Synchronize(Method: TThreadMethod); -begin -{$TODO someone with more clue of the GUI stuff will have to do this} -end; procedure TThread.SetPriority(Value: TThreadPriority); begin @@ -606,7 +592,11 @@ end; { $Log$ - Revision 1.3 2005-02-14 17:13:30 peter + Revision 1.4 2005-02-25 21:41:09 florian + * generic tthread.synchronize + * delphi compatible wakemainthread + + Revision 1.3 2005/02/14 17:13:30 peter * truncate log } diff --git a/rtl/netware/tthread.inc b/rtl/netware/tthread.inc index 2a429a9e99..de82057f82 100644 --- a/rtl/netware/tthread.inc +++ b/rtl/netware/tthread.inc @@ -217,19 +217,6 @@ begin ThreadSetPriority(FHandle, Priorities[Value]); end; -{does not make sense for netware} -procedure TThread.Synchronize(Method: TThreadMethod); -begin -(* - FSynchronizeException := nil; - FMethod := Method; -{ SendMessage(ThreadWindow, CM_EXECPROC, 0, Longint(Self)); } - {$warning Synchronize needs implementation} - if Assigned(FSynchronizeException) then - raise FSynchronizeException; -*) -end; - procedure TThread.SetSuspended(Value: Boolean); begin @@ -271,7 +258,11 @@ end; { $Log$ - Revision 1.4 2005-02-14 17:13:30 peter + Revision 1.5 2005-02-25 21:41:09 florian + * generic tthread.synchronize + * delphi compatible wakemainthread + + Revision 1.4 2005/02/14 17:13:30 peter * truncate log } diff --git a/rtl/netwlibc/tthread.inc b/rtl/netwlibc/tthread.inc index aed07fe1f2..1a09a8b2e0 100644 --- a/rtl/netwlibc/tthread.inc +++ b/rtl/netwlibc/tthread.inc @@ -392,9 +392,6 @@ begin Result := I; end; -procedure TThread.Synchronize(Method: TThreadMethod); -begin -end; procedure TThread.SetPriority(Value: TThreadPriority); begin @@ -403,7 +400,11 @@ end; { $Log$ - Revision 1.3 2005-02-14 17:13:30 peter + Revision 1.4 2005-02-25 21:41:09 florian + * generic tthread.synchronize + * delphi compatible wakemainthread + + Revision 1.3 2005/02/14 17:13:30 peter * truncate log } diff --git a/rtl/openbsd/tthread.inc b/rtl/openbsd/tthread.inc index 35083f5a50..e0543f3907 100644 --- a/rtl/openbsd/tthread.inc +++ b/rtl/openbsd/tthread.inc @@ -243,16 +243,6 @@ begin end; -procedure TThread.Synchronize(Method: TThreadMethod); -begin - FSynchronizeException := nil; - FMethod := Method; -{ SendMessage(ThreadWindow, CM_EXECPROC, 0, Longint(Self)); } - if Assigned(FSynchronizeException) then - raise FSynchronizeException; -end; - - procedure TThread.SetSuspended(Value: Boolean); begin if Value <> FSuspended then @@ -593,10 +583,6 @@ begin Result := I; end; -procedure TThread.Synchronize(Method: TThreadMethod); -begin -{$TODO someone with more clue of the GUI stuff will have to do this} -end; procedure TThread.SetPriority(Value: TThreadPriority); begin @@ -606,7 +592,11 @@ end; { $Log$ - Revision 1.3 2005-02-14 17:13:31 peter + Revision 1.4 2005-02-25 21:41:09 florian + * generic tthread.synchronize + * delphi compatible wakemainthread + + Revision 1.3 2005/02/14 17:13:31 peter * truncate log } diff --git a/rtl/os2/tthread.inc b/rtl/os2/tthread.inc index b90fb8a47e..134d9b25fa 100644 --- a/rtl/os2/tthread.inc +++ b/rtl/os2/tthread.inc @@ -156,11 +156,6 @@ begin end; -procedure TThread.Synchronize(Method: TThreadMethod); -begin -end; - - function ThreadProc(Args: pointer): Integer; cdecl; var FreeThread: Boolean; @@ -241,7 +236,11 @@ end; { $Log$ - Revision 1.5 2005-02-14 17:13:31 peter + Revision 1.6 2005-02-25 21:41:09 florian + * generic tthread.synchronize + * delphi compatible wakemainthread + + Revision 1.5 2005/02/14 17:13:31 peter * truncate log } diff --git a/rtl/win32/tthread.inc b/rtl/win32/tthread.inc index bc1984e180..ac5734b175 100644 --- a/rtl/win32/tthread.inc +++ b/rtl/win32/tthread.inc @@ -183,50 +183,6 @@ begin SetThreadPriority(FHandle, Priorities[Value]); end; -{ old implementation? : -procedure TThread.Synchronize(Method: TThreadMethod); -begin - FSynchronizeException := nil; - FMethod := Method; - SendMessage(ThreadWindow, CM_EXECPROC, 0, Longint(Self)); - if Assigned(FSynchronizeException) then raise FSynchronizeException; -end; -} - -procedure TThread.Synchronize(Method: TThreadMethod); -var - LocalSyncException: Exception; -begin - if SynchronizeMethodProc = nil then - { raise some error? } - exit; - - EnterCriticalSection(SynchronizeCritSect); - SynchronizeMethod := Method; - SynchronizeException := nil; - SynchronizeMethodProc; - // wait infinitely - RtlEventWaitFor(ExecuteEvent); - SynchronizeMethod := nil; - LocalSyncException := SynchronizeException; - LeaveCriticalSection(SynchronizeCritSect); - if LocalSyncException <> nil then - raise LocalSyncException; -end; - -procedure CheckSynchronize; - { assumes being called from GUI thread } -begin - if SynchronizeMethod = nil then - exit; - - try - SynchronizeMethod; - except - SynchronizeException := Exception(AcquireExceptionObject); - end; - RtlEventSetEvent(ExecuteEvent); -end; procedure TThread.SetSuspended(Value: Boolean); begin @@ -265,7 +221,11 @@ begin end; { $Log$ - Revision 1.6 2005-02-14 17:13:32 peter + Revision 1.7 2005-02-25 21:41:09 florian + * generic tthread.synchronize + * delphi compatible wakemainthread + + Revision 1.6 2005/02/14 17:13:32 peter * truncate log Revision 1.5 2005/02/06 13:06:20 peter