X-Git-Url: http://deadsoftware.ru/gitweb?a=blobdiff_plain;f=src%2Fshared%2Fxprofiler.pas;h=71cd14877374e403727d5ba4c181be54ad05d089;hb=ccbaf6953ba60385f0fd86ec5921c81ecd6fe08b;hp=9584fe63aac03b7473ec5983cc380dc4c376d325;hpb=fb8592aa898a8da05a47bfe50ff8272de4fdc995;p=d2df-sdl.git diff --git a/src/shared/xprofiler.pas b/src/shared/xprofiler.pas index 9584fe6..71cd148 100644 --- a/src/shared/xprofiler.pas +++ b/src/shared/xprofiler.pas @@ -20,17 +20,24 @@ unit xprofiler; interface -uses - SysUtils, - {$IF DEFINED(LINUX)} +{$IFNDEF IN_TOOLS} + uses + SysUtils; + + {$DEFINE STOPWATCH_IS_HERE} + +{$ELSE} + uses + SysUtils + {$IF DEFINED(LINUX) OR DEFINED(ANDROID)} {$DEFINE STOPWATCH_IS_HERE} - unixtype, linux + , unixtype, linux {$ELSEIF DEFINED(WINDOWS)} {$DEFINE STOPWATCH_IS_HERE} - Windows + , Windows {$ELSEIF DEFINED(HAIKU)} {$DEFINE STOPWATCH_IS_HERE} - unixtype + , unixtype {$ELSE} {$IFDEF STOPWATCH_IS_HERE} {$UNDEF STOPWATCH_IS_HERE} @@ -38,6 +45,7 @@ uses {$WARNING You suck!} {$ENDIF} ; +{$ENDIF} // IN_TOOLS {$IF DEFINED(STOPWATCH_IS_HERE)} type @@ -152,6 +160,13 @@ function getTimeMilli (): UInt64; inline; implementation +{$IFNDEF IN_TOOLS} +uses + SDL2; + +type + THPTimeType = Int64; +{$ELSE} {$IF DEFINED(LINUX)} type THPTimeType = TTimeSpec; {$ELSE} @@ -161,13 +176,17 @@ type THPTimeType = Int64; var mFrequency: Int64 = 0; mHasHPTimer: Boolean = false; +{$ENDIF} // ////////////////////////////////////////////////////////////////////////// // procedure initTimerIntr (); +{$IFDEF IN_TOOLS} var r: THPTimeType; +{$ENDIF} begin +{$IFDEF IN_TOOLS} if (mFrequency = 0) then begin {$IF DEFINED(LINUX)} @@ -182,9 +201,12 @@ begin mFrequency := r; {$ENDIF} end; +{$ENDIF} + (* init sdl timers? *) end; +{$IFDEF IN_TOOLS} function getTimeMicro (): UInt64; inline; var r: THPTimeType; @@ -198,6 +220,12 @@ begin result := UInt64(r)*1000000 div mFrequency; {$ENDIF} end; +{$ELSE} +function getTimeMicro (): UInt64; inline; +begin + Result := SDL_GetPerformanceCounter() * 1000000 div SDL_GetPerformanceFrequency() +end; +{$ENDIF} function getTimeMilli (): UInt64; inline; @@ -468,8 +496,8 @@ begin 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();