diff options
Diffstat (limited to 'src/video')
-rw-r--r-- | src/video/allegro_v.cpp | 10 | ||||
-rw-r--r-- | src/video/cocoa/cocoa_v.mm | 10 | ||||
-rw-r--r-- | src/video/dedicated_v.cpp | 6 | ||||
-rw-r--r-- | src/video/sdl2_v.cpp | 4 | ||||
-rw-r--r-- | src/video/sdl_v.cpp | 10 | ||||
-rw-r--r-- | src/video/video_driver.hpp | 12 | ||||
-rw-r--r-- | src/video/win32_v.cpp | 10 |
7 files changed, 37 insertions, 25 deletions
diff --git a/src/video/allegro_v.cpp b/src/video/allegro_v.cpp index 800cce40c..29db2f1da 100644 --- a/src/video/allegro_v.cpp +++ b/src/video/allegro_v.cpp @@ -485,20 +485,20 @@ void VideoDriver_Allegro::MainLoop() if (cur_ticks >= next_game_tick || (_fast_forward && !_pause_mode)) { if (_fast_forward && !_pause_mode) { - next_game_tick = cur_ticks + std::chrono::milliseconds(MILLISECONDS_PER_TICK); + next_game_tick = cur_ticks + this->GetGameInterval(); } else { - next_game_tick += std::chrono::milliseconds(MILLISECONDS_PER_TICK); + next_game_tick += this->GetGameInterval(); /* Avoid next_game_tick getting behind more and more if it cannot keep up. */ - if (next_game_tick < cur_ticks - std::chrono::milliseconds(ALLOWED_DRIFT * MILLISECONDS_PER_TICK)) next_game_tick = cur_ticks; + if (next_game_tick < cur_ticks - ALLOWED_DRIFT * this->GetGameInterval()) next_game_tick = cur_ticks; } GameLoop(); } if (cur_ticks >= next_draw_tick) { - next_draw_tick += std::chrono::milliseconds(MILLISECONDS_PER_TICK); + next_draw_tick += this->GetDrawInterval(); /* Avoid next_draw_tick getting behind more and more if it cannot keep up. */ - if (next_draw_tick < cur_ticks - std::chrono::microseconds(ALLOWED_DRIFT * MILLISECONDS_PER_TICK)) next_draw_tick = cur_ticks; + if (next_draw_tick < cur_ticks - ALLOWED_DRIFT * this->GetDrawInterval()) next_draw_tick = cur_ticks; bool old_ctrl_pressed = _ctrl_pressed; diff --git a/src/video/cocoa/cocoa_v.mm b/src/video/cocoa/cocoa_v.mm index 7c8981f61..31bad36dc 100644 --- a/src/video/cocoa/cocoa_v.mm +++ b/src/video/cocoa/cocoa_v.mm @@ -675,20 +675,20 @@ void VideoDriver_Cocoa::GameLoop() if (cur_ticks >= next_game_tick || (_fast_forward && !_pause_mode)) { if (_fast_forward && !_pause_mode) { - next_game_tick = cur_ticks + std::chrono::milliseconds(MILLISECONDS_PER_TICK); + next_game_tick = cur_ticks + this->GetGameInterval(); } else { - next_game_tick += std::chrono::milliseconds(MILLISECONDS_PER_TICK); + next_game_tick += this->GetGameInterval(); /* Avoid next_game_tick getting behind more and more if it cannot keep up. */ - if (next_game_tick < cur_ticks - std::chrono::milliseconds(ALLOWED_DRIFT * MILLISECONDS_PER_TICK)) next_game_tick = cur_ticks; + if (next_game_tick < cur_ticks - ALLOWED_DRIFT * this->GetGameInterval()) next_game_tick = cur_ticks; } ::GameLoop(); } if (cur_ticks >= next_draw_tick) { - next_draw_tick += std::chrono::milliseconds(MILLISECONDS_PER_TICK); + next_draw_tick += this->GetDrawInterval(); /* Avoid next_draw_tick getting behind more and more if it cannot keep up. */ - if (next_draw_tick < cur_ticks - std::chrono::microseconds(ALLOWED_DRIFT * MILLISECONDS_PER_TICK)) next_draw_tick = cur_ticks; + if (next_draw_tick < cur_ticks - ALLOWED_DRIFT * this->GetDrawInterval()) next_draw_tick = cur_ticks; bool old_ctrl_pressed = _ctrl_pressed; diff --git a/src/video/dedicated_v.cpp b/src/video/dedicated_v.cpp index 845b0bf8c..53351458a 100644 --- a/src/video/dedicated_v.cpp +++ b/src/video/dedicated_v.cpp @@ -294,11 +294,11 @@ void VideoDriver_Dedicated::MainLoop() if (cur_ticks >= next_game_tick || _ddc_fastforward) { if (_ddc_fastforward) { - next_game_tick = cur_ticks + std::chrono::milliseconds(MILLISECONDS_PER_TICK); + next_game_tick = cur_ticks + this->GetGameInterval(); } else { - next_game_tick += std::chrono::milliseconds(MILLISECONDS_PER_TICK); + next_game_tick += this->GetGameInterval(); /* Avoid next_game_tick getting behind more and more if it cannot keep up. */ - if (next_game_tick < cur_ticks - std::chrono::milliseconds(ALLOWED_DRIFT * MILLISECONDS_PER_TICK)) next_game_tick = cur_ticks; + if (next_game_tick < cur_ticks - ALLOWED_DRIFT * this->GetGameInterval()) next_game_tick = cur_ticks; } GameLoop(); diff --git a/src/video/sdl2_v.cpp b/src/video/sdl2_v.cpp index 7c04b8743..4170a953c 100644 --- a/src/video/sdl2_v.cpp +++ b/src/video/sdl2_v.cpp @@ -793,9 +793,9 @@ void VideoDriver_SDL::LoopOnce() } if (cur_ticks >= next_draw_tick) { - next_draw_tick += std::chrono::milliseconds(MILLISECONDS_PER_TICK); + next_draw_tick += this->GetDrawInterval(); /* Avoid next_draw_tick getting behind more and more if it cannot keep up. */ - if (next_draw_tick < cur_ticks - std::chrono::microseconds(ALLOWED_DRIFT * MILLISECONDS_PER_TICK)) next_draw_tick = cur_ticks; + if (next_draw_tick < cur_ticks - ALLOWED_DRIFT * this->GetDrawInterval()) next_draw_tick = cur_ticks; bool old_ctrl_pressed = _ctrl_pressed; diff --git a/src/video/sdl_v.cpp b/src/video/sdl_v.cpp index 9f28b641c..0a603f979 100644 --- a/src/video/sdl_v.cpp +++ b/src/video/sdl_v.cpp @@ -731,11 +731,11 @@ void VideoDriver_SDL::MainLoop() if (cur_ticks >= next_game_tick || (_fast_forward && !_pause_mode)) { if (_fast_forward && !_pause_mode) { - next_game_tick = cur_ticks + std::chrono::milliseconds(MILLISECONDS_PER_TICK); + next_game_tick = cur_ticks + this->GetGameInterval(); } else { - next_game_tick += std::chrono::milliseconds(MILLISECONDS_PER_TICK); + next_game_tick += this->GetGameInterval(); /* Avoid next_game_tick getting behind more and more if it cannot keep up. */ - if (next_game_tick < cur_ticks - std::chrono::milliseconds(ALLOWED_DRIFT * MILLISECONDS_PER_TICK)) next_game_tick = cur_ticks; + if (next_game_tick < cur_ticks - ALLOWED_DRIFT * this->GetGameInterval()) next_game_tick = cur_ticks; } /* The gameloop is the part that can run asynchronously. The rest @@ -746,9 +746,9 @@ void VideoDriver_SDL::MainLoop() } if (cur_ticks >= next_draw_tick) { - next_draw_tick += std::chrono::milliseconds(MILLISECONDS_PER_TICK); + next_draw_tick += this->GetDrawInterval(); /* Avoid next_draw_tick getting behind more and more if it cannot keep up. */ - if (next_draw_tick < cur_ticks - std::chrono::microseconds(ALLOWED_DRIFT * MILLISECONDS_PER_TICK)) next_draw_tick = cur_ticks; + if (next_draw_tick < cur_ticks - ALLOWED_DRIFT * this->GetDrawInterval()) next_draw_tick = cur_ticks; bool old_ctrl_pressed = _ctrl_pressed; diff --git a/src/video/video_driver.hpp b/src/video/video_driver.hpp index 94803db22..732050c76 100644 --- a/src/video/video_driver.hpp +++ b/src/video/video_driver.hpp @@ -13,7 +13,9 @@ #include "../driver.h" #include "../core/geometry_type.hpp" #include "../core/math_func.hpp" +#include "../settings_type.h" #include "../zoom_type.h" +#include <chrono> #include <vector> extern std::string _ini_videodriver; @@ -153,6 +155,16 @@ protected: _cur_resolution.height = ClampU(res.height * 3 / 4, DEFAULT_WINDOW_HEIGHT, UINT16_MAX / 2); } } + + std::chrono::steady_clock::duration GetGameInterval() + { + return std::chrono::milliseconds(MILLISECONDS_PER_TICK); + } + + std::chrono::steady_clock::duration GetDrawInterval() + { + return std::chrono::microseconds(1000000 / _settings_client.gui.refresh_rate); + } }; #endif /* VIDEO_VIDEO_DRIVER_HPP */ diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp index 42fcf3f4b..a15071178 100644 --- a/src/video/win32_v.cpp +++ b/src/video/win32_v.cpp @@ -1208,11 +1208,11 @@ void VideoDriver_Win32::MainLoop() if (cur_ticks >= next_game_tick || (_fast_forward && !_pause_mode)) { if (_fast_forward && !_pause_mode) { - next_game_tick = cur_ticks + std::chrono::milliseconds(MILLISECONDS_PER_TICK); + next_game_tick = cur_ticks + this->GetGameInterval(); } else { - next_game_tick += std::chrono::milliseconds(MILLISECONDS_PER_TICK); + next_game_tick += this->GetGameInterval(); /* Avoid next_game_tick getting behind more and more if it cannot keep up. */ - if (next_game_tick < cur_ticks - std::chrono::milliseconds(ALLOWED_DRIFT * MILLISECONDS_PER_TICK)) next_game_tick = cur_ticks; + if (next_game_tick < cur_ticks - ALLOWED_DRIFT * this->GetGameInterval()) next_game_tick = cur_ticks; } /* Flush GDI buffer to ensure we don't conflict with the drawing thread. */ @@ -1226,9 +1226,9 @@ void VideoDriver_Win32::MainLoop() } if (cur_ticks >= next_draw_tick) { - next_draw_tick += std::chrono::milliseconds(MILLISECONDS_PER_TICK); + next_draw_tick += this->GetDrawInterval(); /* Avoid next_draw_tick getting behind more and more if it cannot keep up. */ - if (next_draw_tick < cur_ticks - std::chrono::microseconds(ALLOWED_DRIFT * MILLISECONDS_PER_TICK)) next_draw_tick = cur_ticks; + if (next_draw_tick < cur_ticks - ALLOWED_DRIFT * this->GetDrawInterval()) next_draw_tick = cur_ticks; bool old_ctrl_pressed = _ctrl_pressed; |