diff options
-rw-r--r-- | backends/graphics/opengl/opengl-graphics.cpp | 39 | ||||
-rw-r--r-- | backends/graphics/opengl/opengl-graphics.h | 18 |
2 files changed, 7 insertions, 50 deletions
diff --git a/backends/graphics/opengl/opengl-graphics.cpp b/backends/graphics/opengl/opengl-graphics.cpp index e4df94c52d..4c74b7780d 100644 --- a/backends/graphics/opengl/opengl-graphics.cpp +++ b/backends/graphics/opengl/opengl-graphics.cpp @@ -58,7 +58,7 @@ OpenGLGraphicsManager::OpenGLGraphicsManager() _forceRedraw(false), _scissorOverride(3) #ifdef USE_OSD , _osdMessageChangeRequest(false), _osdMessageAlpha(0), _osdMessageFadeStartTime(0), _osdMessageSurface(nullptr), - _osdIconChangeRequest(false), _osdIconSurface(nullptr) + _osdIconSurface(nullptr) #endif { memset(_gamePalette, 0, sizeof(_gamePalette)); @@ -72,7 +72,6 @@ OpenGLGraphicsManager::~OpenGLGraphicsManager() { #ifdef USE_OSD delete _osdMessageSurface; delete _osdIconSurface; - _osdIconNextData.free(); #endif #if !USE_FORCED_GLES ShaderManager::destroy(); @@ -368,14 +367,13 @@ void OpenGLGraphicsManager::updateScreen() { #ifdef USE_OSD { Common::StackLock lock(_osdMutex); - if (_osdMessageChangeRequest) { osdMessageUpdateSurface(); } + } - if (_osdIconChangeRequest) { - osdIconUpdateSurface(); - } + if (_osdIconSurface) { + _osdIconSurface->updateGLTexture(); } #endif @@ -810,30 +808,11 @@ void OpenGLGraphicsManager::osdMessageUpdateSurface() { void OpenGLGraphicsManager::displayActivityIconOnOSD(const Graphics::Surface *icon) { #ifdef USE_OSD - // HACK: Actually no client code should use graphics functions from - // another thread. But the MT-32 emulator and network synchronization still do, - // thus we need to make sure this doesn't happen while a updateScreen call is done. - // HACK: We can't make OpenGL calls outside of the main thread. This method - // stores a copy of the icon. The main thread will pick up the changed icon, - // and copy it to an OpenGL texture. - Common::StackLock lock(_osdMutex); - - _osdIconChangeRequest = true; - - _osdIconNextData.free(); - if (icon) - _osdIconNextData.copyFrom(*icon); -#endif -} - -#ifdef USE_OSD -void OpenGLGraphicsManager::osdIconUpdateSurface() { delete _osdIconSurface; _osdIconSurface = nullptr; - if (_osdIconNextData.getPixels()) { - Graphics::Surface *converted = _osdIconNextData.convertTo(_defaultFormatAlpha); - _osdIconNextData.free(); + if (icon) { + Graphics::Surface *converted = icon->convertTo(_defaultFormatAlpha); _osdIconSurface = createSurface(_defaultFormatAlpha); assert(_osdIconSurface); @@ -851,13 +830,9 @@ void OpenGLGraphicsManager::osdIconUpdateSurface() { converted->free(); delete converted; - - _osdIconSurface->updateGLTexture(); } - - _osdIconChangeRequest = false; -} #endif +} void OpenGLGraphicsManager::setPalette(const byte *colors, uint start, uint num) { assert(_gameScreen->hasPalette()); diff --git a/backends/graphics/opengl/opengl-graphics.h b/backends/graphics/opengl/opengl-graphics.h index 366ad48fad..7900f06fb7 100644 --- a/backends/graphics/opengl/opengl-graphics.h +++ b/backends/graphics/opengl/opengl-graphics.h @@ -587,24 +587,6 @@ private: }; /** - * Request for the OSD icon surface to be updated. - */ - bool _osdIconChangeRequest; - - /** - * The next OSD background activity icon. - * - * The OSD icon will be updated with this data on the next frame. - * Can be an unallocated surface if the OSD icon should not be displayed. - */ - Graphics::Surface _osdIconNextData; - - /** - * Set the OSD icon surface with the value of the next OSD icon. - */ - void osdIconUpdateSurface(); - - /** * The OSD background activity icon's contents. */ Surface *_osdIconSurface; |