index b4e2fc4d2e8332b5fa96ba18b274e48cd47e3dac..35b70df8263c385d53324afd0ed0f9cc9b9778e5 100644 (file)
--- a/src/shared/xprofiler.pas
+++ b/src/shared/xprofiler.pas
uses
SysUtils,
- {$IF DEFINED(LINUX)}
+ {$IF DEFINED(LINUX) OR DEFINED(ANDROID)}
{$DEFINE STOPWATCH_IS_HERE}
unixtype, linux
{$ELSEIF DEFINED(WINDOWS)}
{$DEFINE STOPWATCH_IS_HERE}
Windows
+ {$ELSEIF DEFINED(HAIKU)}
+ {$DEFINE STOPWATCH_IS_HERE}
+ unixtype
{$ELSE}
{$IFDEF STOPWATCH_IS_HERE}
{$UNDEF STOPWATCH_IS_HERE}
if not mHasHPTimer then raise Exception.Create('profiler error: hires timer is not available');
mFrequency := 1; // just a flag
if (r.tv_nsec <> 0) then mFrequency := 1000000000000000000 div r.tv_nsec;
-{$ELSE}
+{$ELSEIF DEFINED(WINDOWS)}
mHasHPTimer := QueryPerformanceFrequency(r);
if not mHasHPTimer then raise Exception.Create('profiler error: hires timer is not available');
mFrequency := r;
{$IF DEFINED(LINUX)}
clock_gettime(CLOCK_MONOTONIC, @r);
result := UInt64(r.tv_sec)*1000000+UInt64(r.tv_nsec) div 1000; // microseconds
- {$ELSE}
+ {$ELSEIF DEFINED(WINDOWS)}
QueryPerformanceCounter(r);
result := UInt64(r)*1000000 div mFrequency;
{$ENDIF}
begin
if (xpsecs[idx].name = aName) then
begin
- if (idx = xpscur) then raise Exception.Create('profiler error(0): dobule resume: "'+aName+'"');
- if (xpsecs[idx].prevAct <> -1) then raise Exception.Create('profiler error(1): dobule resume: "'+aName+'"');
+ if (idx = xpscur) then raise Exception.Create('profiler error(0): double resume: "'+aName+'"');
+ if (xpsecs[idx].prevAct <> -1) then raise Exception.Create('profiler error(1): double resume: "'+aName+'"');
xpsecs[idx].prevAct := xpscur;
xpscur := idx;
xpsecs[idx].timer.resume();