diff options
| author | sl1nk3.s <sl1nk3.s@gmail.com> | 2009-08-02 17:04:21 +0000 |
|---|---|---|
| committer | sl1nk3.s <sl1nk3.s@gmail.com> | 2009-08-02 17:04:21 +0000 |
| commit | a9cf2e09d06950505b940262f85bb01403d2dca6 (patch) | |
| tree | eb5be41972ca27a37518a05e049ec22b1f6d9d46 /Source | |
| parent | a56a07056d917b216f6fde309adc8599d11d4607 (diff) | |
This should fix the framelimiter, looks a bit inaccurate though (was it like that already ?)
git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3929 8ced0084-cf51-0410-be5f-012b33b47a6e
Diffstat (limited to 'Source')
| -rw-r--r-- | Source/Core/Core/Src/Core.cpp | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/Source/Core/Core/Src/Core.cpp b/Source/Core/Core/Src/Core.cpp index 046674085e..6e40c63adc 100644 --- a/Source/Core/Core/Src/Core.cpp +++ b/Source/Core/Core/Src/Core.cpp @@ -602,29 +602,31 @@ void Callback_VideoCopiedToXFB(bool video_update) static Common::Timer Timer; static u32 frames = 0; static u32 videoupd = 0; + static u64 old_frametime=0; if (video_update) videoupd++; else + { frames++; - - // Custom frame limiter - // ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ - u32 targetfps = (SConfig::GetInstance().m_Framelimit)*5; - static u64 old_frametime=0; - u64 new_frametime; - s16 wait_frametime; - - if (targetfps > 0) - { - new_frametime = Timer.GetTimeDifference() - old_frametime; - old_frametime = Timer.GetTimeDifference(); - wait_frametime = (1000/targetfps) - (u16)new_frametime; - if (targetfps < 35) - wait_frametime--; - if (wait_frametime > 0) - Common::SleepCurrentThread(wait_frametime*2); + // Custom frame limiter + // ŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻŻ + + u32 targetfps = (SConfig::GetInstance().m_Framelimit)*5; + u64 new_frametime; + s16 wait_frametime; + + if (targetfps > 0) + { + new_frametime = Timer.GetTimeDifference() - old_frametime; + old_frametime = Timer.GetTimeDifference(); + wait_frametime = (1000/targetfps) - (u16)new_frametime; + if (targetfps < 35) + wait_frametime--; + if (wait_frametime > 0) + Common::SleepCurrentThread(wait_frametime*2); + } } if (Timer.GetTimeDifference() >= 1000) |
