Browse Source

* Allow to work in worker

Michael Van Canneyt 8 months ago
parent
commit
69c85d74e0
1 changed files with 16 additions and 1 deletions
  1. 16 1
      packages/wasm-utils/src/wasm.pas2js.timer.pas

+ 16 - 1
packages/wasm-utils/src/wasm.pas2js.timer.pas

@@ -8,7 +8,13 @@ unit wasm.pas2js.timer;
 interface
 
 uses
-  sysutils, js, wasienv, web, wasm.timer.shared;
+  sysutils, js, wasienv,
+  {$ifdef JOB_WORKER}
+  webworker,
+  {$ELSE}
+  web,
+  {$ENDIF}
+  wasm.timer.shared;
 
 Type
   TWasmPointer = longint;
@@ -33,6 +39,7 @@ Type
 
 implementation
 
+
 { TWasmTimerAPI }
 
 procedure TWasmTimerAPI.LogCall(const Msg: String);
@@ -102,7 +109,11 @@ begin
   Callback:=InstanceExports['__wasm_timer_tick'];
   if Not Assigned(Callback) then
     Exit(0);
+  {$IFDEF JOB_WORKER}
+  aTimerID:=self_.setInterval(@HandleTimer,aInterval);
+  {$ELSE}
   aTimerID:=Window.setInterval(@HandleTimer,aInterval);
+  {$ENDIF}
   Result:=aTimerID;
   {$IFNDEF NOLOGAPICALLS}
   If LogAPICalls then
@@ -114,7 +125,11 @@ procedure TWasmTimerApi.DeallocateTimer(timerid: TWasmTimerID);
 begin
   If LogAPICalls then
     LogCall('DeAllocateTimer(%d)',[TimerID]);
+  {$IFDEF JOB_WORKER}
+  self_.clearInterval(TimerID);
+  {$else}
   window.clearInterval(TimerID);
+  {$endif}
 end;