diff options
author | Paul Gilbert | 2013-03-05 09:42:06 -0500 |
---|---|---|
committer | Paul Gilbert | 2013-03-05 09:42:06 -0500 |
commit | f93275b3109943a76bd75163d5f4e5bc2cee982c (patch) | |
tree | 3efe75d23881de0cabb54a8ce2d6cfad99e90701 /engines | |
parent | 7a7b2b35e2be1e6526d8aeea2576e8c9231aa73c (diff) | |
download | scummvm-rg350-f93275b3109943a76bd75163d5f4e5bc2cee982c.tar.gz scummvm-rg350-f93275b3109943a76bd75163d5f4e5bc2cee982c.tar.bz2 scummvm-rg350-f93275b3109943a76bd75163d5f4e5bc2cee982c.zip |
HOPKINS: Removed usage of g_system->lockScreen
Diffstat (limited to 'engines')
-rw-r--r-- | engines/hopkins/anim.cpp | 45 | ||||
-rw-r--r-- | engines/hopkins/graphics.cpp | 35 | ||||
-rw-r--r-- | engines/hopkins/graphics.h | 3 |
3 files changed, 50 insertions, 33 deletions
diff --git a/engines/hopkins/anim.cpp b/engines/hopkins/anim.cpp index bc0075bd63..08180671c5 100644 --- a/engines/hopkins/anim.cpp +++ b/engines/hopkins/anim.cpp @@ -79,7 +79,7 @@ void AnimationManager::playAnim(const Common::String &filename, uint32 rate1, ui f.read(screenP, nbytes); if (_clearAnimationFl) { - _vm->_graphicsManager.lockScreen(true); + _vm->_graphicsManager.lockScreen(); _vm->_graphicsManager.clearScreen(); _vm->_graphicsManager.unlockScreen(); } @@ -94,12 +94,14 @@ void AnimationManager::playAnim(const Common::String &filename, uint32 rate1, ui _vm->_graphicsManager.setPaletteVGA256(_vm->_graphicsManager._palette); } else { _vm->_graphicsManager.setPaletteVGA256(_vm->_graphicsManager._palette); - _vm->_graphicsManager.lockScreen(true); + _vm->_graphicsManager.lockScreen(); if (hasScreenCopy) _vm->_graphicsManager.m_scroll16A(screenCopy, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0); else _vm->_graphicsManager.m_scroll16(screenP, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0); _vm->_graphicsManager.unlockScreen(); + _vm->_graphicsManager.addRefreshRect(Common::Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)); + _vm->_graphicsManager.DD_VBL(); } _vm->_eventsManager._rateCounter = 0; @@ -145,7 +147,7 @@ void AnimationManager::playAnim(const Common::String &filename, uint32 rate1, ui if (!_vm->_eventsManager._escKeyFl) { _vm->_eventsManager._rateCounter = 0; - _vm->_graphicsManager.lockScreen(true); + _vm->_graphicsManager.lockScreen(); if (hasScreenCopy) { if (*screenP != kByteStop) { _vm->_graphicsManager.copyWinscanVbe3(screenP, screenCopy); @@ -155,6 +157,8 @@ void AnimationManager::playAnim(const Common::String &filename, uint32 rate1, ui _vm->_graphicsManager.copyVideoVbe16(screenP); } _vm->_graphicsManager.unlockScreen(); + _vm->_graphicsManager.addRefreshRect(Common::Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)); + _vm->_graphicsManager.DD_VBL(); _vm->_soundManager.checkSoundEnd(); } @@ -260,9 +264,10 @@ void AnimationManager::playAnim2(const Common::String &filename, uint32 rate1, u oldScrollPosX = _vm->_graphicsManager._scrollPosX; _vm->_graphicsManager.SCANLINE(SCREEN_WIDTH); _vm->_graphicsManager.scrollScreen(0); - _vm->_graphicsManager.lockScreen(true); + _vm->_graphicsManager.lockScreen(); _vm->_graphicsManager.clearScreen(); _vm->_graphicsManager.unlockScreen(); + _vm->_graphicsManager._maxX = SCREEN_WIDTH; if (_vm->_graphicsManager.WinScan / 2 > SCREEN_WIDTH) { hasScreenCopy = true; @@ -275,12 +280,14 @@ void AnimationManager::playAnim2(const Common::String &filename, uint32 rate1, u _vm->_graphicsManager.setPaletteVGA256(_vm->_graphicsManager._palette); } else { _vm->_graphicsManager.setPaletteVGA256(_vm->_graphicsManager._palette); - _vm->_graphicsManager.lockScreen(true); + _vm->_graphicsManager.lockScreen(); if (hasScreenCopy) _vm->_graphicsManager.m_scroll16A(screenCopy, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0); else _vm->_graphicsManager.m_scroll16(screenP, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0); + _vm->_graphicsManager.unlockScreen(); + _vm->_graphicsManager.addRefreshRect(Common::Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)); _vm->_graphicsManager.DD_VBL(); } _vm->_eventsManager._rateCounter = 0; @@ -319,7 +326,7 @@ void AnimationManager::playAnim2(const Common::String &filename, uint32 rate1, u } _vm->_eventsManager._rateCounter = 0; - _vm->_graphicsManager.lockScreen(true); + _vm->_graphicsManager.lockScreen(); if (*screenP != kByteStop) { if (hasScreenCopy) { _vm->_graphicsManager.copyWinscanVbe3(screenP, screenCopy); @@ -329,6 +336,7 @@ void AnimationManager::playAnim2(const Common::String &filename, uint32 rate1, u } } _vm->_graphicsManager.unlockScreen(); + _vm->_graphicsManager.addRefreshRect(Common::Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)); _vm->_graphicsManager.DD_VBL(); _vm->_soundManager.checkSoundEnd(); } @@ -382,24 +390,27 @@ void AnimationManager::playAnim2(const Common::String &filename, uint32 rate1, u memcpy(_vm->_graphicsManager._palette, _vm->_graphicsManager._oldPalette, 769); _vm->_graphicsManager.clearPalette(); - _vm->_graphicsManager.lockScreen(true); + _vm->_graphicsManager.lockScreen(); _vm->_graphicsManager.clearScreen(); _vm->_graphicsManager.unlockScreen(); + _vm->_graphicsManager._scrollPosX = oldScrollPosX; _vm->_graphicsManager.scrollScreen(oldScrollPosX); if (_vm->_graphicsManager._largeScreenFl) { _vm->_graphicsManager.SCANLINE(2 * SCREEN_WIDTH); _vm->_graphicsManager._maxX = 2 * SCREEN_WIDTH; - _vm->_graphicsManager.lockScreen(true); + _vm->_graphicsManager.lockScreen(); _vm->_graphicsManager.m_scroll16(_vm->_graphicsManager._vesaBuffer, _vm->_eventsManager._startPos.x, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0); } else { _vm->_graphicsManager.SCANLINE(SCREEN_WIDTH); _vm->_graphicsManager._maxX = SCREEN_WIDTH; - _vm->_graphicsManager.lockScreen(true); + _vm->_graphicsManager.lockScreen(); _vm->_graphicsManager.clearScreen(); _vm->_graphicsManager.m_scroll16(_vm->_graphicsManager._vesaBuffer, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0); } _vm->_graphicsManager.unlockScreen(); + _vm->_graphicsManager.addRefreshRect(Common::Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)); + _vm->_graphicsManager.fadeInShort(); _vm->_graphicsManager.DD_VBL(); @@ -642,12 +653,14 @@ void AnimationManager::playSequence(const Common::String &file, uint32 rate1, ui } _vm->_graphicsManager.setPaletteVGA256(_vm->_graphicsManager._palette); } else { - _vm->_graphicsManager.lockScreen(true); + _vm->_graphicsManager.lockScreen(); if (hasScreenCopy) _vm->_graphicsManager.m_scroll16A(screenCopy, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0); else _vm->_graphicsManager.m_scroll16(screenP, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0); _vm->_graphicsManager.unlockScreen(); + _vm->_graphicsManager.addRefreshRect(Common::Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)); + _vm->_graphicsManager.DD_VBL(); } bool skipFl = false; @@ -718,7 +731,7 @@ void AnimationManager::playSequence(const Common::String &file, uint32 rate1, ui break; _vm->_eventsManager._rateCounter = 0; - _vm->_graphicsManager.lockScreen(true); + _vm->_graphicsManager.lockScreen(); if (hasScreenCopy) { if (*screenP != kByteStop) { _vm->_graphicsManager.copyWinscanVbe(screenP, screenCopy); @@ -728,6 +741,8 @@ void AnimationManager::playSequence(const Common::String &file, uint32 rate1, ui _vm->_graphicsManager.copyVideoVbe16a(screenP); } _vm->_graphicsManager.unlockScreen(); + _vm->_graphicsManager.addRefreshRect(Common::Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)); + _vm->_graphicsManager.DD_VBL(); _vm->_soundManager.checkSoundEnd(); } @@ -801,13 +816,15 @@ void AnimationManager::playSequence2(const Common::String &file, uint32 rate1, u } _vm->_graphicsManager.setPaletteVGA256(_vm->_graphicsManager._palette); } else { - _vm->_graphicsManager.lockScreen(true); + _vm->_graphicsManager.lockScreen(); _vm->_graphicsManager.setPaletteVGA256(_vm->_graphicsManager._palette); if (multiScreenFl) _vm->_graphicsManager.m_scroll16A(screenCopy, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0); else _vm->_graphicsManager.m_scroll16(screenP, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, 0, 0); _vm->_graphicsManager.unlockScreen(); + _vm->_graphicsManager.addRefreshRect(Common::Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)); + _vm->_graphicsManager.DD_VBL(); } _vm->_eventsManager._rateCounter = 0; @@ -844,7 +861,7 @@ void AnimationManager::playSequence2(const Common::String &file, uint32 rate1, u } _vm->_eventsManager._rateCounter = 0; - _vm->_graphicsManager.lockScreen(true); + _vm->_graphicsManager.lockScreen(); if (multiScreenFl) { if (*screenP != kByteStop) { _vm->_graphicsManager.copyWinscanVbe(screenP, screenCopy); @@ -854,6 +871,8 @@ void AnimationManager::playSequence2(const Common::String &file, uint32 rate1, u _vm->_graphicsManager.copyVideoVbe16a(screenP); } _vm->_graphicsManager.unlockScreen(); + _vm->_graphicsManager.addRefreshRect(Common::Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)); + _vm->_graphicsManager.DD_VBL(); _vm->_soundManager.checkSoundEnd(); } diff --git a/engines/hopkins/graphics.cpp b/engines/hopkins/graphics.cpp index 540c18f1b4..ecefe4c73e 100644 --- a/engines/hopkins/graphics.cpp +++ b/engines/hopkins/graphics.cpp @@ -50,7 +50,6 @@ GraphicsManager::GraphicsManager() { _vesaScreen = NULL; _vesaBuffer = NULL; _screenBuffer = NULL; - _isPhysicalPtr = false; _showDirtyRects = false; _lineNbr2 = 0; @@ -127,19 +126,11 @@ void GraphicsManager::setGraphicalMode(int width, int height) { /** * (try to) Lock Screen */ -void GraphicsManager::lockScreen(bool shouldUsePhysicalScreen) { +void GraphicsManager::lockScreen() { if (!_skipVideoLockFl) { if (_lockCounter++ == 0) { - if (shouldUsePhysicalScreen) { - Graphics::Surface *s = g_system->lockScreen(); - _videoPtr = (byte *)s->pixels; - WinScan = s->pitch; - } else { - _videoPtr = _screenBuffer; - WinScan = SCREEN_WIDTH * 2; - } - - _isPhysicalPtr = shouldUsePhysicalScreen; + _videoPtr = _screenBuffer; + WinScan = SCREEN_WIDTH * 2; } } } @@ -150,9 +141,6 @@ void GraphicsManager::lockScreen(bool shouldUsePhysicalScreen) { void GraphicsManager::unlockScreen() { assert(_videoPtr); if (--_lockCounter == 0) { - if (_isPhysicalPtr) - g_system->unlockScreen(); - _videoPtr = NULL; } } @@ -163,8 +151,8 @@ void GraphicsManager::unlockScreen() { void GraphicsManager::clearScreen() { assert(_videoPtr); Common::fill(_videoPtr, _videoPtr + WinScan * _screenHeight, 0); - if (!_isPhysicalPtr) - addRefreshRect(Common::Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)); + + addRefreshRect(Common::Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)); } /** @@ -201,7 +189,7 @@ void GraphicsManager::loadVgaImage(const Common::String &file) { */ void GraphicsManager::loadScreen(const Common::String &file) { Common::File f; - assert(!_videoPtr || !_isPhysicalPtr); + assert(!_videoPtr); bool flag = true; if (_vm->_fileManager.searchCat(file, 6) == g_PTRNUL) { @@ -1198,14 +1186,25 @@ void GraphicsManager::displayDirtyRects() { } void GraphicsManager::displayRefreshRects() { + Graphics::Surface *screenSurface = NULL; + if (_showDirtyRects) { + screenSurface = g_system->lockScreen(); + g_system->copyRectToScreen(_screenBuffer, WinScan, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT); + } // Loop through copying over any specified rects to the screen for (uint idx = 0; idx < _refreshRects.size(); ++idx) { const Common::Rect &r = _refreshRects[idx]; byte *srcP = _screenBuffer + WinScan * r.top + (r.left * 2); g_system->copyRectToScreen(srcP, WinScan, r.left, r.top, r.width(), r.height()); + + if (_showDirtyRects) + screenSurface->frameRect(r, 0xffffff); } + if (_showDirtyRects) + g_system->unlockScreen(); + resetRefreshRects(); } diff --git a/engines/hopkins/graphics.h b/engines/hopkins/graphics.h index 54e4156982..bbc3b87c0a 100644 --- a/engines/hopkins/graphics.h +++ b/engines/hopkins/graphics.h @@ -58,7 +58,6 @@ private: int _screenWidth; int _screenHeight; byte *_videoPtr; - bool _isPhysicalPtr; int _width; int _posXClipped, _posYClipped; bool _clipFl; @@ -121,7 +120,7 @@ public: ~GraphicsManager(); void setParent(HopkinsEngine *vm); - void lockScreen(bool shouldUsePhysicalScreen = false); + void lockScreen(); void unlockScreen(); void clearPalette(); void clearScreen(); |