aboutsummaryrefslogtreecommitdiff
path: root/graphics/macgui/macwindowmanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'graphics/macgui/macwindowmanager.cpp')
-rw-r--r--graphics/macgui/macwindowmanager.cpp24
1 files changed, 18 insertions, 6 deletions
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<BaseMacWindow *>::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