Browse Source

* Do not use TMonitor, not all platforms support it

Michaël Van Canneyt 1 month ago
parent
commit
bcb02dcfd1

+ 7 - 4
packages/vcl-compat/src/system.messaging.pp

@@ -26,9 +26,9 @@ interface
 
 uses
 {$IFDEF FPC_DOTTEDUNITS}
-  System.SysUtils, System.Classes, System.Generics.Collections;
+  System.SysUtils, System.Classes, System.Generics.Collections, System.SyncObjs;
 {$ELSE}  
-  SysUtils, Classes, Generics.Collections;
+  SysUtils, Classes, Generics.Collections, syncobjs;
 {$ENDIF}
 
 type
@@ -280,6 +280,7 @@ type
 
   private
     FMessageClients: TMessageClientListDict;
+    FLock : TCriticalSection;
 
   protected
     FLockCount : Integer;
@@ -386,10 +387,12 @@ end;
 constructor TSimpleMessageManager.Create;
 begin
   FMessageClients:=CreateMessageTypeDict;
+  FLock:=TCriticalSection.Create;
 end;
 
 destructor TSimpleMessageManager.Destroy;
 begin
+  FreeAndNil(FLock);
   FreeAndNil(FMessageClients);
   inherited;
 end;
@@ -429,14 +432,14 @@ begin
   if FLockCount > 0 then
     __fresnel_console_log('ALREADY LOCKED');
   {$endif}
-  TMonitor.Enter(Self);
+  FLock.Enter;
   Inc(FLockCount);
 end;
 
 procedure TSimpleMessageManager.UnLock;
 begin
   Dec(FLockCount);
-  TMonitor.Exit(Self);
+  FLock.Leave;
 end;
 
 

+ 1 - 2
packages/vcl-compat/tests/testcompat.lpr

@@ -4,8 +4,7 @@ program testcompat;
 
 uses
   {$IFDEF UNIX}cwstring, cthreads,{$ENDIF}
-  fpmonitor,
-  Classes, consoletestrunner, tcnetencoding, tciotuils, 
+  Classes, consoletestrunner, tcnetencoding, tciotuils,
   utmessagemanager, utcdevices, utcanalytics, utcimagelist, 
   utcnotifications, utcjson, utcpush, utchash, utcregex, 
   utcregexapi, utthreading, utccredentials;