From ec1dd0bf618f2c4fe17c62db9eec3b5e056574a0 Mon Sep 17 00:00:00 2001 From: Patric Stout Date: Sat, 20 Feb 2021 11:15:15 +0100 Subject: [PATCH] Codechange: be consistent in what CheckPaletteAnim() does and when it is called Additionally, make sure this is a class method. Later commits will make use of this. --- src/video/allegro_v.cpp | 6 ++---- src/video/allegro_v.h | 1 + src/video/cocoa/cocoa_v.h | 2 +- src/video/sdl2_v.cpp | 2 -- src/video/sdl2_v.h | 2 +- src/video/sdl_v.cpp | 10 ++++------ src/video/sdl_v.h | 1 + src/video/video_driver.hpp | 5 +++++ src/video/win32_v.cpp | 1 - src/video/win32_v.h | 3 +-- 10 files changed, 16 insertions(+), 17 deletions(-) diff --git a/src/video/allegro_v.cpp b/src/video/allegro_v.cpp index 9b5b2e1d9644..883e1f72ebd8 100644 --- a/src/video/allegro_v.cpp +++ b/src/video/allegro_v.cpp @@ -95,7 +95,7 @@ static void InitPalette() UpdatePalette(0, 256); } -static void CheckPaletteAnim() +void VideoDriver_Allegro::CheckPaletteAnim() { if (_cur_palette.count_dirty != 0) { Blitter *blitter = BlitterFactory::GetCurrentBlitter(); @@ -484,8 +484,6 @@ void VideoDriver_Allegro::MainLoop() auto next_game_tick = cur_ticks; auto next_draw_tick = cur_ticks; - CheckPaletteAnim(); - for (;;) { InteractiveRandom(); // randomness @@ -522,7 +520,7 @@ void VideoDriver_Allegro::MainLoop() this->InputLoop(); ::InputLoop(); UpdateWindows(); - CheckPaletteAnim(); + this->CheckPaletteAnim(); this->Paint(); } diff --git a/src/video/allegro_v.h b/src/video/allegro_v.h index 3c55a6691e37..2ab74fa30599 100644 --- a/src/video/allegro_v.h +++ b/src/video/allegro_v.h @@ -36,6 +36,7 @@ class VideoDriver_Allegro : public VideoDriver { protected: void InputLoop() override; void Paint() override; + void CheckPaletteAnim() override; }; /** Factory for the allegro video driver. */ diff --git a/src/video/cocoa/cocoa_v.h b/src/video/cocoa/cocoa_v.h index 09668ed8be86..7e4d8c9fd70d 100644 --- a/src/video/cocoa/cocoa_v.h +++ b/src/video/cocoa/cocoa_v.h @@ -76,6 +76,7 @@ class VideoDriver_Cocoa : public VideoDriver { float GetDPIScale() override; void InputLoop() override; void Paint() override; + void CheckPaletteAnim() override; private: bool PollEvent(); @@ -88,7 +89,6 @@ class VideoDriver_Cocoa : public VideoDriver { bool MakeWindow(int width, int height); void UpdatePalette(uint first_color, uint num_colors); - void CheckPaletteAnim(); void BlitIndexedToView32(int left, int top, int right, int bottom); }; diff --git a/src/video/sdl2_v.cpp b/src/video/sdl2_v.cpp index 1cc6c55988d6..7c406b677a2c 100644 --- a/src/video/sdl2_v.cpp +++ b/src/video/sdl2_v.cpp @@ -853,8 +853,6 @@ void VideoDriver_SDL::MainLoop() last_realtime_tick = cur_ticks; next_game_tick = cur_ticks; - this->CheckPaletteAnim(); - if (_draw_threaded) { /* Initialise the mutex first, because that's the thing we *need* * directly in the newly created thread. */ diff --git a/src/video/sdl2_v.h b/src/video/sdl2_v.h index 91f4b2c7f6ed..4f1f286c98ea 100644 --- a/src/video/sdl2_v.h +++ b/src/video/sdl2_v.h @@ -48,6 +48,7 @@ class VideoDriver_SDL : public VideoDriver { void UnlockVideoBuffer() override; void Paint() override; void PaintThread() override; + void CheckPaletteAnim(); private: int PollEvent(); @@ -55,7 +56,6 @@ class VideoDriver_SDL : public VideoDriver { void MainLoopCleanup(); bool CreateMainSurface(uint w, uint h, bool resize); bool CreateMainWindow(uint w, uint h); - void CheckPaletteAnim(); #ifdef __EMSCRIPTEN__ /* Convert a constant pointer back to a non-constant pointer to a member function. */ diff --git a/src/video/sdl_v.cpp b/src/video/sdl_v.cpp index 0aa216df2e10..ab91cb56ac18 100644 --- a/src/video/sdl_v.cpp +++ b/src/video/sdl_v.cpp @@ -123,8 +123,10 @@ static void InitPalette() UpdatePalette(true); } -static void CheckPaletteAnim() +void VideoDriver_SDL::CheckPaletteAnim() { + _local_palette = _cur_palette; + if (_cur_palette.count_dirty != 0) { Blitter *blitter = BlitterFactory::GetCurrentBlitter(); @@ -183,7 +185,6 @@ void VideoDriver_SDL::PaintThread() _draw_signal->wait(*_draw_mutex); while (_draw_continue) { - CheckPaletteAnim(); /* Then just draw and wait till we stop */ this->Paint(); _draw_signal->wait(lock); @@ -708,8 +709,6 @@ void VideoDriver_SDL::MainLoop() auto next_game_tick = cur_ticks; auto next_draw_tick = cur_ticks; - CheckPaletteAnim(); - std::thread draw_thread; if (_draw_threaded) { /* Initialise the mutex first, because that's the thing we *need* @@ -781,12 +780,11 @@ void VideoDriver_SDL::MainLoop() this->InputLoop(); ::InputLoop(); UpdateWindows(); - _local_palette = _cur_palette; + this->CheckPaletteAnim(); if (_draw_mutex != nullptr && !HasModalProgress()) { _draw_signal->notify_one(); } else { - CheckPaletteAnim(); this->Paint(); } } diff --git a/src/video/sdl_v.h b/src/video/sdl_v.h index a51062d850aa..be6010aca3fd 100644 --- a/src/video/sdl_v.h +++ b/src/video/sdl_v.h @@ -43,6 +43,7 @@ class VideoDriver_SDL : public VideoDriver { void UnlockVideoBuffer() override; void Paint() override; void PaintThread() override; + void CheckPaletteAnim(); private: std::unique_lock draw_lock; diff --git a/src/video/video_driver.hpp b/src/video/video_driver.hpp index b8acb2bb8895..768b2fe6c8db 100644 --- a/src/video/video_driver.hpp +++ b/src/video/video_driver.hpp @@ -184,6 +184,11 @@ class VideoDriver : public Driver { */ virtual void PaintThread() {} + /** + * Process any pending palette animation. + */ + virtual void CheckPaletteAnim() {} + std::chrono::steady_clock::duration GetGameInterval() { return std::chrono::milliseconds(MILLISECONDS_PER_TICK); diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp index 8e887f0aa9dd..2024aec189d9 100644 --- a/src/video/win32_v.cpp +++ b/src/video/win32_v.cpp @@ -1201,7 +1201,6 @@ void VideoDriver_Win32::MainLoop() _wnd.running = true; - CheckPaletteAnim(); for (;;) { InteractiveRandom(); // randomness diff --git a/src/video/win32_v.h b/src/video/win32_v.h index d515944187eb..6954770855dc 100644 --- a/src/video/win32_v.h +++ b/src/video/win32_v.h @@ -49,12 +49,11 @@ class VideoDriver_Win32 : public VideoDriver { void UnlockVideoBuffer() override; void Paint() override; void PaintThread() override; + void CheckPaletteAnim() override; private: std::unique_lock draw_lock; - void CheckPaletteAnim(); - static void PaintThreadThunk(VideoDriver_Win32 *drv); };