Browse Source

* tthread uses systhrds

peter 20 years ago
parent
commit
a3ab3bca9c
2 changed files with 18 additions and 13 deletions
  1. 11 8
      rtl/win32/systhrds.pp
  2. 7 5
      rtl/win32/tthread.inc

+ 11 - 8
rtl/win32/systhrds.pp

@@ -169,7 +169,7 @@ CONST
       end;
       end;
 
 
 
 
-    function ThreadMain(param : pointer) : pointer;cdecl;
+    function ThreadMain(param : pointer) : integer; stdcall;
       var
       var
         ti : tthreadinfo;
         ti : tthreadinfo;
       begin
       begin
@@ -190,7 +190,7 @@ CONST
 {$ifdef DEBUG_MT}
 {$ifdef DEBUG_MT}
         writeln('Jumping to thread function');
         writeln('Jumping to thread function');
 {$endif DEBUG_MT}
 {$endif DEBUG_MT}
-        ThreadMain:=pointer(ti.f(ti.p));
+        ThreadMain:=ti.f(ti.p);
       end;
       end;
 
 
 
 
@@ -371,9 +371,9 @@ Const
         wrError    = 3;
         wrError    = 3;
 
 
 type Tbasiceventstate=record
 type Tbasiceventstate=record
-			fhandle    : THandle;
-	                flasterror : longint;
-      		       end;
+                        fhandle    : THandle;
+                        flasterror : longint;
+                       end;
      plocaleventrec= ^tbasiceventstate;
      plocaleventrec= ^tbasiceventstate;
 
 
 function intBasicEventCreate(EventAttributes : Pointer;
 function intBasicEventCreate(EventAttributes : Pointer;
@@ -445,7 +445,7 @@ end;
 
 
 
 
 Var
 Var
-  WinThreadManager : TThreadManager; 
+  WinThreadManager : TThreadManager;
 
 
 Procedure SetWinThreadManager;
 Procedure SetWinThreadManager;
 
 
@@ -494,9 +494,12 @@ end.
 
 
 {
 {
   $Log$
   $Log$
-  Revision 1.12  2004-12-22 21:29:24  marco
+  Revision 1.13  2004-12-26 13:46:45  peter
+    * tthread uses systhrds
+
+  Revision 1.12  2004/12/22 21:29:24  marco
    * rtlevent kraam. Checked (compile): Linux, FreeBSD, Darwin, Windows
    * rtlevent kraam. Checked (compile): Linux, FreeBSD, Darwin, Windows
-  	Check work: ask Neli.
+        Check work: ask Neli.
 
 
   Revision 1.11  2004/05/23 15:30:13  marco
   Revision 1.11  2004/05/23 15:30:13  marco
    * first try
    * first try

+ 7 - 5
rtl/win32/tthread.inc

@@ -105,9 +105,10 @@ end;
 
 
 { TThread }
 { TThread }
 
 
-function ThreadProc(Thread: TThread): Integer; Stdcall;
+function ThreadProc(ThreadObjPtr: Pointer): Integer;
 var
 var
   FreeThread: Boolean;
   FreeThread: Boolean;
+  Thread: TThread absolute ThreadObjPtr;
 begin
 begin
   try
   try
     Thread.Execute;
     Thread.Execute;
@@ -119,7 +120,6 @@ begin
   Thread.FFinished := True;
   Thread.FFinished := True;
   Thread.DoTerminate;
   Thread.DoTerminate;
   if FreeThread then Thread.Free;
   if FreeThread then Thread.Free;
-  ExitThread(Result);
 end;
 end;
 
 
 constructor TThread.Create(CreateSuspended: Boolean);
 constructor TThread.Create(CreateSuspended: Boolean);
@@ -131,8 +131,7 @@ begin
   FSuspended := CreateSuspended;
   FSuspended := CreateSuspended;
   Flags := 0;
   Flags := 0;
   if CreateSuspended then Flags := CREATE_SUSPENDED;
   if CreateSuspended then Flags := CREATE_SUSPENDED;
-  IsMultiThread := TRUE;
-  FHandle := CreateThread(nil, 0, @ThreadProc, Pointer(self), Flags, DWord(FThreadID));
+  FHandle := BeginThread(nil, 0, @ThreadProc, pointer(self), Flags, FThreadID);
   FFatalException := nil;
   FFatalException := nil;
 end;
 end;
 
 
@@ -266,7 +265,10 @@ begin
 end;
 end;
 {
 {
   $Log$
   $Log$
-  Revision 1.3  2004-12-23 09:42:42  marco
+  Revision 1.4  2004-12-26 13:46:45  peter
+    * tthread uses systhrds
+
+  Revision 1.3  2004/12/23 09:42:42  marco
    * first tthread.synchronize support (merged neli's patches)
    * first tthread.synchronize support (merged neli's patches)
 
 
   Revision 1.2  2004/01/29 16:58:28  marco
   Revision 1.2  2004/01/29 16:58:28  marco