From 96e9eadd97d9d5d4098154f0b63ebc7e497932d2 Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Mon, 13 Nov 2017 00:38:04 +0100 Subject: [PATCH] - removed I_MSTime entirely after checking how the wipe code actually works. Since this calls I_WaitVBL, which resets the frame time, it was essentially just like calling a real-time timer anyway and nothing in it required a specific 0-timepoint. The same applies to the ZScript interface. All it needs is a millisecond-precise timer with no semantics attached. --- src/d_main.cpp | 4 ++-- src/dobject.cpp | 2 +- src/i_time.cpp | 27 +-------------------------- src/i_time.h | 4 +--- 4 files changed, 5 insertions(+), 32 deletions(-) diff --git a/src/d_main.cpp b/src/d_main.cpp index e58c2f686..6afa74c33 100644 --- a/src/d_main.cpp +++ b/src/d_main.cpp @@ -945,7 +945,7 @@ void D_Display () I_FreezeTime(true); screen->WipeEndScreen (); - wipestart = I_MSTime(); + wipestart = I_FPSTime(); NetUpdate(); // send out any new accumulation do @@ -953,7 +953,7 @@ void D_Display () do { I_WaitVBL(2); - nowtime = I_MSTime(); + nowtime = I_FPSTime(); diff = (nowtime - wipestart) * 40 / 1000; // Using 35 here feels too slow. } while (diff < 1); wipestart = nowtime; diff --git a/src/dobject.cpp b/src/dobject.cpp index 17b9743f3..299486de9 100644 --- a/src/dobject.cpp +++ b/src/dobject.cpp @@ -615,7 +615,7 @@ void DObject::CheckIfSerialized () const DEFINE_ACTION_FUNCTION(DObject, MSTime) { - ACTION_RETURN_INT(I_MSTime()); + ACTION_RETURN_INT(I_FPSTime()); } void *DObject::ScriptVar(FName field, PType *type) diff --git a/src/i_time.cpp b/src/i_time.cpp index 6fe65ef3c..a8e30747a 100644 --- a/src/i_time.cpp +++ b/src/i_time.cpp @@ -80,7 +80,7 @@ void I_SetFrameTime() // Must only be called once per frame/swapbuffers. // // Caches all timing information for the current rendered frame so that any - // calls to I_FPSTime, I_MSTime, I_GetTime or I_GetTimeFrac will return + // calls to I_GetTime or I_GetTimeFrac will return // the same time. if (FreezeTime == 0) @@ -120,36 +120,11 @@ int I_WaitForTic(int prevtic) return time; } -uint64_t I_NSTime() -{ - if (FreezeTime == 0) - { - return CurrentFrameStartTime - FirstFrameStartTime; - } - else - { - if (FirstFrameStartTime == 0) - { - FirstFrameStartTime = GetClockTimeNS(); - return 0; - } - else - { - return GetClockTimeNS() - FirstFrameStartTime; - } - } -} - uint64_t I_FPSTimeNS() { return GetClockTimeNS(); } -unsigned int I_MSTime() -{ - return NSToMS(I_NSTime()); -} - unsigned int I_FPSTime() { return NSToMS(I_FPSTimeNS()); diff --git a/src/i_time.h b/src/i_time.h index 5d1514924..95f07a490 100644 --- a/src/i_time.h +++ b/src/i_time.h @@ -14,15 +14,13 @@ double I_GetTimeFrac(uint32_t *ms); int I_WaitForTic(int); // Freezes tic counting temporarily. While frozen, calls to I_GetTime() -// will always return the same value. This does not affect I_MSTime(). +// will always return the same value. // You must also not call I_WaitForTic() while freezing time, since the // tic will never arrive (unless it's the current one). void I_FreezeTime(bool frozen); // [RH] Returns millisecond-accurate time -unsigned int I_MSTime(); unsigned int I_FPSTime(); // Nanosecond-accurate time -uint64_t I_NSTime(); uint64_t I_FPSTimeNS();