diff options
Diffstat (limited to 'backends')
-rw-r--r-- | backends/platform/wii/osystem.h | 1 | ||||
-rw-r--r-- | backends/platform/wii/osystem_events.cpp | 3 | ||||
-rw-r--r-- | backends/platform/wii/osystem_gfx.cpp | 16 |
3 files changed, 20 insertions, 0 deletions
diff --git a/backends/platform/wii/osystem.h b/backends/platform/wii/osystem.h index eaaf616538..ed33b43a81 100644 --- a/backends/platform/wii/osystem.h +++ b/backends/platform/wii/osystem.h @@ -117,6 +117,7 @@ private: void deinitGfx(); void updateScreenResolution(); void switchVideoMode(int mode); + bool needsScreenUpdate(); void initSfx(); void deinitSfx(); diff --git a/backends/platform/wii/osystem_events.cpp b/backends/platform/wii/osystem_events.cpp index 488834fc20..5d0bca453f 100644 --- a/backends/platform/wii/osystem_events.cpp +++ b/backends/platform/wii/osystem_events.cpp @@ -300,6 +300,9 @@ bool OSystem_Wii::pollEvent(Common::Event &event) { return true; } + if (needsScreenUpdate()) + updateScreen(); + u32 bd = 0, bh = 0, bu = 0; if (PAD_ScanPads() & 1) { diff --git a/backends/platform/wii/osystem_gfx.cpp b/backends/platform/wii/osystem_gfx.cpp index 3ce6343800..09575bb83d 100644 --- a/backends/platform/wii/osystem_gfx.cpp +++ b/backends/platform/wii/osystem_gfx.cpp @@ -441,6 +441,22 @@ void OSystem_Wii::copyRectToScreen(const byte *buf, int pitch, int x, int y, _gameDirty = true; } +bool OSystem_Wii::needsScreenUpdate() { + if (getMillis() - _lastScreenUpdate < 1000 / MAX_FPS) + return false; + + if (_gameRunning && _gameDirty) + return true; + + if (_overlayVisible && _overlayDirty) + return true; + + if (_mouseVisible && _texMouse.palette && _cursorPaletteDirty) + return true; + + return false; +} + void OSystem_Wii::updateScreen() { static f32 ar; static gfx_screen_coords_t cc; |