From b89961f01da962dd0663a6c9a8b7a95f6a9a6ef6 Mon Sep 17 00:00:00 2001 From: raven02 Date: Mon, 11 Jul 2016 21:00:04 +0800 Subject: [PATCH] rsx: set frame limiter before rsx->flip() (#1885) --- rpcs3/Emu/RSX/rsx_methods.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/rpcs3/Emu/RSX/rsx_methods.cpp b/rpcs3/Emu/RSX/rsx_methods.cpp index 73c44552f7..e32f272cec 100644 --- a/rpcs3/Emu/RSX/rsx_methods.cpp +++ b/rpcs3/Emu/RSX/rsx_methods.cpp @@ -723,6 +723,14 @@ namespace rsx Emu.Pause(); } + if (double limit = g_cfg_rsx_frame_limit.get()) + { + if (limit < 0) limit = rsx->fps_limit; // TODO + + std::this_thread::sleep_for(std::chrono::milliseconds((s64)(1000.0 / limit - rsx->timer_sync.GetElapsedTimeInMilliSec()))); + rsx->timer_sync.Start(); + } + rsx->gcm_current_buffer = arg; rsx->flip(arg); // After each flip PS3 system is executing a routine that changes registers value to some default. @@ -740,15 +748,6 @@ namespace rsx func(ppu, 1); }); } - - if (double limit = g_cfg_rsx_frame_limit.get()) - { - if (limit < 0) limit = rsx->fps_limit; // TODO - - std::this_thread::sleep_for(std::chrono::milliseconds((s64)(1000.0 / limit - rsx->timer_sync.GetElapsedTimeInMilliSec()))); - rsx->timer_sync.Start(); - rsx->local_transform_constants.clear(); - } } void user_command(thread* rsx, u32 arg)