Skip to content

Commit

Permalink
- removed I_MSTime entirely after checking how the wipe code actually…
Browse files Browse the repository at this point in the history
… 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.
  • Loading branch information
coelckers committed Nov 12, 2017
1 parent 2c65f08 commit 96e9ead
Show file tree
Hide file tree
Showing 4 changed files with 5 additions and 32 deletions.
4 changes: 2 additions & 2 deletions src/d_main.cpp
Expand Up @@ -945,15 +945,15 @@ void D_Display ()
I_FreezeTime(true);
screen->WipeEndScreen ();

wipestart = I_MSTime();
wipestart = I_FPSTime();
NetUpdate(); // send out any new accumulation

do
{
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;
Expand Down
2 changes: 1 addition & 1 deletion src/dobject.cpp
Expand Up @@ -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)
Expand Down
27 changes: 1 addition & 26 deletions src/i_time.cpp
Expand Up @@ -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)
Expand Down Expand Up @@ -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());
Expand Down
4 changes: 1 addition & 3 deletions src/i_time.h
Expand Up @@ -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();

0 comments on commit 96e9ead

Please sign in to comment.