[Scummvm-git-logs] scummvm master -> c537cd9ca68ec9d318b8b78b91604fe57c2585f5
rvanlaar
noreply at scummvm.org
Tue Sep 20 21:12:28 UTC 2022
This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
c537cd9ca6 GRAPHICS: MACGUI: Fix memory leak
Commit: c537cd9ca68ec9d318b8b78b91604fe57c2585f5
https://github.com/scummvm/scummvm/commit/c537cd9ca68ec9d318b8b78b91604fe57c2585f5
Author: Roland van Laar (roland at rolandvanlaar.nl)
Date: 2022-09-20T23:12:09+02:00
Commit Message:
GRAPHICS: MACGUI: Fix memory leak
Clean up _desktopBmp before it's reallocated again.
Changed paths:
graphics/macgui/macwindowmanager.cpp
graphics/macgui/macwindowmanager.h
diff --git a/graphics/macgui/macwindowmanager.cpp b/graphics/macgui/macwindowmanager.cpp
index 73a371c332c..32afc142b21 100644
--- a/graphics/macgui/macwindowmanager.cpp
+++ b/graphics/macgui/macwindowmanager.cpp
@@ -228,6 +228,13 @@ MacWindowManager::MacWindowManager(uint32 mode, MacPatterns *patterns, Common::L
setDesktopMode(mode);
}
+void MacWindowManager::cleanupDesktopBmp() {
+ if (_desktopBmp) {
+ _desktopBmp->free();
+ delete _desktopBmp;
+ }
+}
+
MacWindowManager::~MacWindowManager() {
for (Common::HashMap<uint, BaseMacWindow *>::iterator it = _windows.begin(); it != _windows.end(); it++)
delete it->_value;
@@ -238,12 +245,9 @@ MacWindowManager::~MacWindowManager() {
delete _fontMan;
delete _screenCopy;
- if (_desktopBmp) {
- _desktopBmp->free();
- delete _desktopBmp;
- }
delete _desktop;
+ cleanupDesktopBmp();
cleanupDataBundle();
g_system->getTimerManager()->removeTimerProc(&menuTimerHandler);
@@ -253,9 +257,8 @@ void MacWindowManager::setDesktopMode(uint32 mode) {
if (!(mode & Graphics::kWMNoScummVMWallpaper)) {
if (!_mode || (_mode & Graphics::kWMNoScummVMWallpaper))
loadDesktop();
- } else if (_desktopBmp) {
- _desktopBmp->free();
- _desktopBmp = nullptr;
+ } else {
+ cleanupDesktopBmp();
}
_mode = mode;
@@ -782,6 +785,7 @@ void MacWindowManager::loadDesktop() {
}
void MacWindowManager::setDesktopColor(byte r, byte g, byte b) {
+ cleanupDesktopBmp();
_desktopBmp = new Graphics::TransparentSurface();
uint32 color = TS_RGB(r, g, b);
diff --git a/graphics/macgui/macwindowmanager.h b/graphics/macgui/macwindowmanager.h
index c9d21110191..cd922d971b8 100644
--- a/graphics/macgui/macwindowmanager.h
+++ b/graphics/macgui/macwindowmanager.h
@@ -340,6 +340,8 @@ public:
void loadDataBundle();
void cleanupDataBundle();
+ void cleanupDesktopBmp();
+
BorderOffsets getBorderOffsets(byte windowType);
Common::SeekableReadStream *getBorderFile(byte windowType, uint32 flags);
Common::SeekableReadStream *getFile(const Common::String &filename);
More information about the Scummvm-git-logs
mailing list