[Project64] Clean up FramePerSecondClass.cpp

This commit is contained in:
zilmar 2015-12-24 06:41:11 +11:00
parent 58c125d337
commit 6ffd1663ca
2 changed files with 149 additions and 149 deletions

View File

@ -13,179 +13,179 @@
#include <Project64-core/N64System/N64Types.h> #include <Project64-core/N64System/N64Types.h>
#include <Windows.h> #include <Windows.h>
CFramePerSecond::CFramePerSecond () CFramePerSecond::CFramePerSecond()
{ {
m_iFrameRateType = g_Settings->LoadDword(UserInterface_FrameDisplayType); m_iFrameRateType = g_Settings->LoadDword(UserInterface_FrameDisplayType);
m_ScreenHertz = g_Settings->LoadDword(GameRunning_ScreenHertz); m_ScreenHertz = g_Settings->LoadDword(GameRunning_ScreenHertz);
g_Settings->RegisterChangeCB(UserInterface_FrameDisplayType,this,(CSettings::SettingChangedFunc)FrameRateTypeChanged); g_Settings->RegisterChangeCB(UserInterface_FrameDisplayType, this, (CSettings::SettingChangedFunc)FrameRateTypeChanged);
g_Settings->RegisterChangeCB(GameRunning_ScreenHertz,this,(CSettings::SettingChangedFunc)ScreenHertzChanged); g_Settings->RegisterChangeCB(GameRunning_ScreenHertz, this, (CSettings::SettingChangedFunc)ScreenHertzChanged);
if (m_ScreenHertz == 0) if (m_ScreenHertz == 0)
{ {
m_ScreenHertz = 60; m_ScreenHertz = 60;
} }
LARGE_INTEGER Freq; LARGE_INTEGER Freq;
QueryPerformanceFrequency(&Freq); QueryPerformanceFrequency(&Freq);
m_Frequency = Freq.QuadPart; m_Frequency = Freq.QuadPart;
Reset(true); Reset(true);
} }
CFramePerSecond::~CFramePerSecond() CFramePerSecond::~CFramePerSecond()
{ {
g_Settings->UnregisterChangeCB(UserInterface_FrameDisplayType,this,(CSettings::SettingChangedFunc)FrameRateTypeChanged); g_Settings->UnregisterChangeCB(UserInterface_FrameDisplayType, this, (CSettings::SettingChangedFunc)FrameRateTypeChanged);
g_Settings->UnregisterChangeCB(GameRunning_ScreenHertz,this,(CSettings::SettingChangedFunc)ScreenHertzChanged); g_Settings->UnregisterChangeCB(GameRunning_ScreenHertz, this, (CSettings::SettingChangedFunc)ScreenHertzChanged);
} }
void CFramePerSecond::Reset (bool ClearDisplay) void CFramePerSecond::Reset(bool ClearDisplay)
{ {
m_CurrentFrame = 0; m_CurrentFrame = 0;
m_LastFrame = 0; m_LastFrame = 0;
for (int count = 0; count < NoOfFrames; count ++) for (int count = 0; count < NoOfFrames; count++)
{ {
m_Frames[count] = 0; m_Frames[count] = 0;
} }
if (ClearDisplay) if (ClearDisplay)
{ {
g_Notify->DisplayMessage2(L""); g_Notify->DisplayMessage2(L"");
return; return;
} }
if (m_iFrameRateType == FR_VIs) if (m_iFrameRateType == FR_VIs)
{ {
DisplayViCounter(0); DisplayViCounter(0);
} }
} }
void CFramePerSecond::UpdateViCounter ( void ) void CFramePerSecond::UpdateViCounter(void)
{ {
if (m_iFrameRateType != FR_VIs && m_iFrameRateType != FR_PERCENT) if (m_iFrameRateType != FR_VIs && m_iFrameRateType != FR_PERCENT)
{ {
return; return;
} }
if ((m_CurrentFrame & 7) == 0) if ((m_CurrentFrame & 7) == 0)
{ {
LARGE_INTEGER Time; LARGE_INTEGER Time;
QueryPerformanceCounter(&Time); QueryPerformanceCounter(&Time);
m_Frames[(m_CurrentFrame >> 3) % NoOfFrames] = Time.QuadPart - m_LastFrame; m_Frames[(m_CurrentFrame >> 3) % NoOfFrames] = Time.QuadPart - m_LastFrame;
m_LastFrame = Time.QuadPart; m_LastFrame = Time.QuadPart;
DisplayViCounter(0); DisplayViCounter(0);
} }
m_CurrentFrame += 1; m_CurrentFrame += 1;
} }
void CFramePerSecond::DisplayViCounter(uint32_t FrameRate) void CFramePerSecond::DisplayViCounter(uint32_t FrameRate)
{ {
if (m_iFrameRateType == FR_VIs) if (m_iFrameRateType == FR_VIs)
{ {
if (FrameRate != 0) if (FrameRate != 0)
{ {
g_Notify->DisplayMessage2(stdstr_f("VI/s: %d.00", FrameRate).ToUTF16().c_str()); g_Notify->DisplayMessage2(stdstr_f("VI/s: %d.00", FrameRate).ToUTF16().c_str());
} }
else else
{ {
if (m_CurrentFrame > (NoOfFrames << 3)) if (m_CurrentFrame > (NoOfFrames << 3))
{ {
__int64 Total; __int64 Total;
Total = 0; Total = 0;
for (int count = 0; count < NoOfFrames; count ++) for (int count = 0; count < NoOfFrames; count++)
{ {
Total += m_Frames[count]; Total += m_Frames[count];
} }
g_Notify->DisplayMessage2(stdstr_f("VI/s: %.2f", m_Frequency / ((double)Total / (NoOfFrames << 3))).ToUTF16().c_str()); g_Notify->DisplayMessage2(stdstr_f("VI/s: %.2f", m_Frequency / ((double)Total / (NoOfFrames << 3))).ToUTF16().c_str());
} }
else else
{ {
g_Notify->DisplayMessage2(L"VI/s: -.--"); g_Notify->DisplayMessage2(L"VI/s: -.--");
} }
} }
} }
if (m_iFrameRateType == FR_PERCENT) if (m_iFrameRateType == FR_PERCENT)
{ {
float Percent; float Percent;
if (FrameRate != 0) if (FrameRate != 0)
{ {
Percent = ((float)FrameRate) / m_ScreenHertz; Percent = ((float)FrameRate) / m_ScreenHertz;
} }
else else
{ {
if (m_CurrentFrame > (NoOfFrames << 3)) if (m_CurrentFrame > (NoOfFrames << 3))
{ {
__int64 Total; __int64 Total;
Total = 0; Total = 0;
for (int count = 0; count < NoOfFrames; count ++) for (int count = 0; count < NoOfFrames; count++)
{ {
Total += m_Frames[count]; Total += m_Frames[count];
} }
Percent = ((float)(m_Frequency / ((double)Total / (NoOfFrames << 3)))) / m_ScreenHertz; Percent = ((float)(m_Frequency / ((double)Total / (NoOfFrames << 3)))) / m_ScreenHertz;
} }
else else
{ {
g_Notify->DisplayMessage2(L""); g_Notify->DisplayMessage2(L"");
return; return;
} }
} }
g_Notify->DisplayMessage2(stdstr_f("%.1f %%",Percent * 100).ToUTF16().c_str()); g_Notify->DisplayMessage2(stdstr_f("%.1f %%", Percent * 100).ToUTF16().c_str());
} }
} }
void CFramePerSecond::FrameRateTypeChanged (CFramePerSecond * _this) void CFramePerSecond::FrameRateTypeChanged(CFramePerSecond * _this)
{ {
_this->m_iFrameRateType = g_Settings->LoadDword(UserInterface_FrameDisplayType); _this->m_iFrameRateType = g_Settings->LoadDword(UserInterface_FrameDisplayType);
_this->Reset(true); _this->Reset(true);
} }
void CFramePerSecond::ScreenHertzChanged (CFramePerSecond * _this) void CFramePerSecond::ScreenHertzChanged(CFramePerSecond * _this)
{ {
_this->m_ScreenHertz = g_Settings->LoadDword(GameRunning_ScreenHertz); _this->m_ScreenHertz = g_Settings->LoadDword(GameRunning_ScreenHertz);
_this->Reset(true); _this->Reset(true);
} }
void CFramePerSecond::UpdateDlCounter ( void ) void CFramePerSecond::UpdateDlCounter(void)
{ {
if (m_iFrameRateType != FR_DLs) if (m_iFrameRateType != FR_DLs)
{ {
return; return;
} }
if ((m_CurrentFrame & 3) == 0) { if ((m_CurrentFrame & 3) == 0) {
LARGE_INTEGER Time; LARGE_INTEGER Time;
QueryPerformanceCounter(&Time); QueryPerformanceCounter(&Time);
m_Frames[(m_CurrentFrame >> 2) % NoOfFrames] = Time.QuadPart - m_LastFrame; m_Frames[(m_CurrentFrame >> 2) % NoOfFrames] = Time.QuadPart - m_LastFrame;
m_LastFrame = Time.QuadPart; m_LastFrame = Time.QuadPart;
DisplayDlCounter(0); DisplayDlCounter(0);
} }
m_CurrentFrame += 1; m_CurrentFrame += 1;
} }
void CFramePerSecond::DisplayDlCounter(uint32_t FrameRate) void CFramePerSecond::DisplayDlCounter(uint32_t FrameRate)
{ {
if (m_iFrameRateType != FR_DLs) if (m_iFrameRateType != FR_DLs)
{ {
return; return;
} }
if (FrameRate != 0) if (FrameRate != 0)
{ {
g_Notify->DisplayMessage2(stdstr_f("DL/s: %d.00", FrameRate).ToUTF16().c_str()); g_Notify->DisplayMessage2(stdstr_f("DL/s: %d.00", FrameRate).ToUTF16().c_str());
} }
else else
{ {
if (m_CurrentFrame > (NoOfFrames << 2)) if (m_CurrentFrame > (NoOfFrames << 2))
{ {
__int64 Total; __int64 Total;
Total = 0; Total = 0;
for (int count = 0; count < NoOfFrames; count ++) for (int count = 0; count < NoOfFrames; count++)
{ {
Total += m_Frames[count]; Total += m_Frames[count];
} }
g_Notify->DisplayMessage2(stdstr_f("DL/s: %.1f", m_Frequency / ((double)Total / (NoOfFrames << 2))).ToUTF16().c_str()); g_Notify->DisplayMessage2(stdstr_f("DL/s: %.1f", m_Frequency / ((double)Total / (NoOfFrames << 2))).ToUTF16().c_str());
} }
else else
{ {
g_Notify->DisplayMessage2(L"DL/s: -.--"); g_Notify->DisplayMessage2(L"DL/s: -.--");
} }
} }
} }

View File

@ -13,24 +13,24 @@
class CFramePerSecond class CFramePerSecond
{ {
public: public:
CFramePerSecond ( void ); CFramePerSecond(void);
~CFramePerSecond ( void ); ~CFramePerSecond(void);
void Reset ( bool ClearDisplay ); void Reset(bool ClearDisplay);
void UpdateDlCounter ( void ); void UpdateDlCounter(void);
void UpdateViCounter ( void ); void UpdateViCounter(void);
void DisplayDlCounter ( uint32_t FrameRate ); void DisplayDlCounter(uint32_t FrameRate);
void DisplayViCounter ( uint32_t FrameRate ); void DisplayViCounter(uint32_t FrameRate);
private: private:
static void FrameRateTypeChanged(CFramePerSecond * _this); static void FrameRateTypeChanged(CFramePerSecond * _this);
static void ScreenHertzChanged(CFramePerSecond * _this); static void ScreenHertzChanged(CFramePerSecond * _this);
int m_iFrameRateType, m_ScreenHertz; int m_iFrameRateType, m_ScreenHertz;
enum { NoOfFrames = 7 }; enum { NoOfFrames = 7 };
int64_t m_Frequency, m_Frames[NoOfFrames], m_LastFrame; int64_t m_Frequency, m_Frames[NoOfFrames], m_LastFrame;
int m_CurrentFrame; int m_CurrentFrame;
}; };