From 919ca52de16a3e1dd88ce8ac5ec99e062a4feccf Mon Sep 17 00:00:00 2001 From: DeaDDooMER Date: Sun, 23 Sep 2018 19:21:06 +0300 Subject: [PATCH] Improved portability (bug #45) --- src/game/g_net.pas | 12 ++++++-- src/shared/xprofiler.pas | 63 +++++++--------------------------------- 2 files changed, 19 insertions(+), 56 deletions(-) diff --git a/src/game/g_net.pas b/src/game/g_net.pas index 2c88e6d..c15df2b 100644 --- a/src/game/g_net.pas +++ b/src/game/g_net.pas @@ -66,6 +66,12 @@ const BANLIST_FILENAME = 'banlist.txt'; NETDUMP_FILENAME = 'netdump'; + {$IFDEF FREEBSD} + NilThreadId = nil; + {$ELSE} + NilThreadId = 0; + {$ENDIF} + type TNetClient = record ID: Byte; @@ -149,7 +155,7 @@ var NetIGDService: TURLStr; {$ENDIF} - NetPortThread: TThreadID = 0; + NetPortThread: TThreadID = NilThreadId; NetDumpFile: TStream; @@ -319,10 +325,10 @@ begin NetMode := NET_NONE; - if NetPortThread <> 0 then + if NetPortThread <> NilThreadId then WaitForThreadTerminate(NetPortThread, 66666); - NetPortThread := 0; + NetPortThread := NilThreadId; g_Net_UnforwardPorts(); if NetDump then diff --git a/src/shared/xprofiler.pas b/src/shared/xprofiler.pas index 35b70df..28ea126 100644 --- a/src/shared/xprofiler.pas +++ b/src/shared/xprofiler.pas @@ -20,24 +20,10 @@ unit xprofiler; interface -uses - SysUtils, - {$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} - {$ENDIF} - {$WARNING You suck!} - {$ENDIF} - ; + uses + SysUtils; + + {$DEFINE STOPWATCH_IS_HERE} {$IF DEFINED(STOPWATCH_IS_HERE)} type @@ -152,51 +138,22 @@ function getTimeMilli (): UInt64; inline; implementation -{$IF DEFINED(LINUX)} -type THPTimeType = TTimeSpec; -{$ELSE} -type THPTimeType = Int64; -{$ENDIF} - -var - mFrequency: Int64 = 0; - mHasHPTimer: Boolean = false; + uses + SDL2; + type + THPTimeType = Int64; // ////////////////////////////////////////////////////////////////////////// // procedure initTimerIntr (); -var - r: THPTimeType; begin - if (mFrequency = 0) then - begin -{$IF DEFINED(LINUX)} - if (clock_getres(CLOCK_MONOTONIC, @r) <> 0) then raise Exception.Create('profiler error: cannot get timer resolution'); - mHasHPTimer := (r.tv_nsec <> 0); - 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; -{$ELSEIF DEFINED(WINDOWS)} - mHasHPTimer := QueryPerformanceFrequency(r); - if not mHasHPTimer then raise Exception.Create('profiler error: hires timer is not available'); - mFrequency := r; -{$ENDIF} - end; + (* init sdl timers? *) end; function getTimeMicro (): UInt64; inline; -var - r: THPTimeType; begin - //if (mFrequency = 0) then initTimerIntr(); - {$IF DEFINED(LINUX)} - clock_gettime(CLOCK_MONOTONIC, @r); - result := UInt64(r.tv_sec)*1000000+UInt64(r.tv_nsec) div 1000; // microseconds - {$ELSEIF DEFINED(WINDOWS)} - QueryPerformanceCounter(r); - result := UInt64(r)*1000000 div mFrequency; - {$ENDIF} + Result := SDL_GetPerformanceCounter() * 1000000 div SDL_GetPerformanceFrequency() end; -- 2.29.2