From 6ef485f44896ad778d355bc1201f2f143cc9e770 Mon Sep 17 00:00:00 2001 From: Jody Northup Date: Sat, 4 Jul 2009 04:13:10 +0000 Subject: Fixed cursor corruption in non-8bit graphics games when switching back from overlay. svn-id: r42084 --- graphics/cursorman.cpp | 7 +++++-- graphics/cursorman.h | 18 ++++++++---------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/graphics/cursorman.cpp b/graphics/cursorman.cpp index 08a0b3bb88..9559b59d4a 100644 --- a/graphics/cursorman.cpp +++ b/graphics/cursorman.cpp @@ -77,7 +77,7 @@ void CursorManager::popCursor() { if (!_cursorStack.empty()) { cur = _cursorStack.top(); - g_system->setMouseCursor(cur->_data, cur->_width, cur->_height, cur->_hotspotX, cur->_hotspotY, cur->_keycolor, cur->_targetScale, cur->_format); + g_system->setMouseCursor(cur->_data, cur->_width, cur->_height, cur->_hotspotX, cur->_hotspotY, cur->_keycolor, cur->_targetScale, &cur->_format); } g_system->showMouse(isVisible()); @@ -135,7 +135,10 @@ void CursorManager::replaceCursor(const byte *buf, uint w, uint h, int hotspotX, cur->_keycolor = keycolor; cur->_targetScale = targetScale; #ifdef ENABLE_RGB_COLOR - cur->_format = format; + if (format) + cur->_format = *format; + else + cur->_format = Graphics::PixelFormat::createFormatCLUT8(); #endif g_system->setMouseCursor(cur->_data, w, h, hotspotX, hotspotY, keycolor, targetScale, format); diff --git a/graphics/cursorman.h b/graphics/cursorman.h index b744109b61..ab87c9b095 100644 --- a/graphics/cursorman.h +++ b/graphics/cursorman.h @@ -148,22 +148,20 @@ private: int _hotspotX; int _hotspotY; uint32 _keycolor; - const Graphics::PixelFormat *_format; + Graphics::PixelFormat _format; byte _targetScale; uint _size; Cursor(const byte *data, uint w, uint h, int hotspotX, int hotspotY, uint32 keycolor = 0xFFFFFFFF, int targetScale = 1, const Graphics::PixelFormat *format = NULL) { #ifdef ENABLE_RGB_COLOR - if (!format) { - _size = w * h; - _keycolor &= 0xFF; - } else { - _size = w * h * format->bytesPerPixel; - _keycolor &= ((1 << (format->bytesPerPixel << 3)) - 1); - } - _format = format; + if (!format) + _format = Graphics::PixelFormat::createFormatCLUT8(); + else + _format = *format; + _size = w * h * _format.bytesPerPixel; + _keycolor &= ((1 << (_format.bytesPerPixel << 3)) - 1); #else - _format = NULL; + _format = Graphics::PixelFormat::createFormatCLUT8(); _size = w * h; _keycolor &= 0xFF; #endif -- cgit v1.2.3