diff --git a/docs/rh-log.txt b/docs/rh-log.txt index cb1dae7db..53b5891ef 100644 --- a/docs/rh-log.txt +++ b/docs/rh-log.txt @@ -1,4 +1,6 @@ November 28, 2009 +- Fixed: The FPS meter cannot use I_MSTime(), because if the game is started + with +vid_fps 1, it can need the time before the timer is ready to start. - Initialize TempRenderTexture and the back buffer to black upon creation. - Fixed: Windowed mode always needs to draw to the temporary surface, even when not gamma correcting, so that D3DFB::GetCurrentScreen() can read from diff --git a/src/sdl/i_system.cpp b/src/sdl/i_system.cpp index 8d0a8b947..931b8a37d 100644 --- a/src/sdl/i_system.cpp +++ b/src/sdl/i_system.cpp @@ -124,6 +124,12 @@ unsigned int I_MSTime (void) return time - BaseTime; } +// Exactly the same thing, but based does no modification to the time. +unsigned int I_FPSTime() +{ + return SDL_GetTicks(); +} + // // I_GetTime // returns time in 1/35th second tics diff --git a/src/sdl/i_system.h b/src/sdl/i_system.h index 768240074..778af53f5 100644 --- a/src/sdl/i_system.h +++ b/src/sdl/i_system.h @@ -126,6 +126,7 @@ bool I_WriteIniFailed (); // [RH] Returns millisecond-accurate time unsigned int I_MSTime (void); +unsigned int I_FPSTime(); // Directory searching routines diff --git a/src/v_video.cpp b/src/v_video.cpp index ca8eb7fdc..d8187eb9d 100644 --- a/src/v_video.cpp +++ b/src/v_video.cpp @@ -838,7 +838,7 @@ void DFrameBuffer::DrawRateStuff () // Draws frame time and cumulative fps if (vid_fps) { - DWORD ms = I_MSTime (); + DWORD ms = I_FPSTime(); DWORD howlong = ms - LastMS; if (howlong >= 0) { @@ -876,7 +876,7 @@ void DFrameBuffer::DrawRateStuff () // Buffer can be NULL if we're doing hardware accelerated 2D if (buffer != NULL) { - buffer += (GetHeight()-1)*GetPitch(); + buffer += (GetHeight()-1) * GetPitch(); for (i = 0; i < tics*2; i += 2) buffer[i] = 0xff; for ( ; i < 20*2; i += 2) buffer[i] = 0x00; diff --git a/src/win32/i_system.cpp b/src/win32/i_system.cpp index d39cfc804..6320c33f5 100644 --- a/src/win32/i_system.cpp +++ b/src/win32/i_system.cpp @@ -280,6 +280,22 @@ unsigned int I_MSTime() return timeGetTime() - basetime; } +//========================================================================== +// +// I_FPSTime +// +// Returns the current system time in milliseconds. This is used by the FPS +// meter of DFrameBuffer::DrawRateStuff(). Since the screen can display +// before the play simulation is ready to begin, this needs to be +// separate from I_MSTime(). +// +//========================================================================== + +unsigned int I_FPSTime() +{ + return timeGetTime(); +} + //========================================================================== // // I_GetTimePolled diff --git a/src/win32/i_system.h b/src/win32/i_system.h index f268358d7..66b2bac7d 100644 --- a/src/win32/i_system.h +++ b/src/win32/i_system.h @@ -132,6 +132,7 @@ bool I_WriteIniFailed (); // [RH] Returns millisecond-accurate time unsigned int I_MSTime (void); +unsigned int I_FPSTime(); // [RH] Title banner to display during startup extern const IWADInfo *DoomStartupInfo;