Skip to content

Commit

Permalink
GRAPHICS: MACGUI: Restore screen on exiting from menu
Browse files Browse the repository at this point in the history
  • Loading branch information
sev- committed Jul 23, 2018
1 parent 6fc6ce3 commit c48489f
Show file tree
Hide file tree
Showing 3 changed files with 10 additions and 1 deletion.
4 changes: 4 additions & 0 deletions graphics/macgui/macmenu.cpp
Expand Up @@ -673,6 +673,8 @@ bool MacMenu::mouseMove(int x, int y) {
_isVisible = false;
if (_wm->_mode & kWMModalMenuMode) {
_wm->pauseEngine(false);
_wm->_screen = _wm->_screenCopy; // restore screen
g_system->copyRectToScreen(_wm->_screenCopy->getBasePtr(0, 0), _wm->_screenCopy->pitch, 0, 0, _wm->_screenCopy->w, _wm->_screenCopy->h);
}
}

Expand All @@ -686,6 +688,8 @@ bool MacMenu::mouseRelease(int x, int y) {

if (_wm->_mode & kWMModalMenuMode) {
_wm->pauseEngine(false);
_wm->_screen = _wm->_screenCopy; // restore screen
g_system->copyRectToScreen(_wm->_screenCopy->getBasePtr(0, 0), _wm->_screenCopy->pitch, 0, 0, _wm->_screenCopy->w, _wm->_screenCopy->h);
}

if (_activeItem != -1 && _activeSubItem != -1 && _items[_activeItem]->subitems[_activeSubItem]->enabled) {
Expand Down
3 changes: 3 additions & 0 deletions graphics/macgui/macwindowmanager.cpp
Expand Up @@ -149,6 +149,7 @@ static void menuTimerHandler(void *refCon);

MacWindowManager::MacWindowManager() {
_screen = 0;
_screenCopy = 0;
_lastId = 0;
_activeWindow = -1;

Expand Down Expand Up @@ -184,6 +185,7 @@ MacWindowManager::~MacWindowManager() {
delete _windows[i];

delete _fontMan;
delete _screenCopy;

g_system->getTimerManager()->removeTimerProc(&menuTimerHandler);
}
Expand Down Expand Up @@ -338,6 +340,7 @@ static void menuTimerHandler(void *refCon) {
if (wm->_menuHotzone.contains(wm->_lastMousePos)) {
wm->activateMenu();
if (wm->_mode & kWMModalMenuMode) {
wm->_screenCopy = new ManagedSurface(*wm->_screen); // Create a copy
wm->pauseEngine(true);
}
}
Expand Down
4 changes: 3 additions & 1 deletion graphics/macgui/macwindowmanager.h
Expand Up @@ -235,9 +235,11 @@ class MacWindowManager {
void removeFromStack(BaseMacWindow *target);
void removeFromWindowList(BaseMacWindow *target);

private:
public:
ManagedSurface *_screen;
ManagedSurface *_screenCopy;

private:
Common::List<BaseMacWindow *> _windowStack;
Common::Array<BaseMacWindow *> _windows;

Expand Down

0 comments on commit c48489f

Please sign in to comment.