From c17800cfc4f09cebcfb90aea07f94c8f107b3e9d Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Fri, 4 Oct 2019 22:32:24 +0200 Subject: GRAPHICS: MACGUI: Add possibility to setup engine redraw callback --- graphics/macgui/macwindowmanager.cpp | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) (limited to 'graphics/macgui/macwindowmanager.cpp') diff --git a/graphics/macgui/macwindowmanager.cpp b/graphics/macgui/macwindowmanager.cpp index 65a5da5322..1e8a4bac77 100644 --- a/graphics/macgui/macwindowmanager.cpp +++ b/graphics/macgui/macwindowmanager.cpp @@ -160,8 +160,10 @@ MacWindowManager::MacWindowManager() { _menuDelay = 0; _menuTimerActive = false; - _engine = nullptr; + _engineP = nullptr; + _engineR = nullptr; _pauseEngineCallback = nullptr; + _redrawEngineCallback = nullptr; _colorBlack = 0; _colorWhite = 2; @@ -319,8 +321,13 @@ void MacWindowManager::draw() { removeMarked(); - if (_fullRefresh && !(_mode & kWMModeNoDesktop)) - drawDesktop(); + if (_fullRefresh) { + if (!(_mode & kWMModeNoDesktop)) + drawDesktop(); + + if (_redrawEngineCallback != nullptr) + _redrawEngineCallback(_engineR); + } for (Common::List::const_iterator it = _windowStack.begin(); it != _windowStack.end(); it++) { BaseMacWindow *w = *it; @@ -525,14 +532,19 @@ void MacWindowManager::passPalette(const byte *pal, uint size) { } void MacWindowManager::pauseEngine(bool pause) { - if (_engine && _pauseEngineCallback) { - _pauseEngineCallback(_engine, pause); + if (_engineP && _pauseEngineCallback) { + _pauseEngineCallback(_engineP, pause); } } void MacWindowManager::setEnginePauseCallback(void *engine, void (*pauseCallback)(void *, bool)) { - _engine = engine; + _engineP = engine; _pauseEngineCallback = pauseCallback; } +void MacWindowManager::setEngineRedrawCallback(void *engine, void (*redrawCallback)(void *)) { + _engineR = engine; + _redrawEngineCallback = redrawCallback; +} + } // End of namespace Graphics -- cgit v1.2.3