aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYotam Barnoy2010-11-18 07:17:53 +0000
committerYotam Barnoy2010-11-18 07:17:53 +0000
commitb77ef177ed6ccfb685ca88e7de568f9ff287d0d2 (patch)
treeb12fe6733b68eac2bca2d9866f6b914f6338f41e
parent3631a5f90b031c7961557fa35e39c6d51bde090e (diff)
downloadscummvm-rg350-b77ef177ed6ccfb685ca88e7de568f9ff287d0d2.tar.gz
scummvm-rg350-b77ef177ed6ccfb685ca88e7de568f9ff287d0d2.tar.bz2
scummvm-rg350-b77ef177ed6ccfb685ca88e7de568f9ff287d0d2.zip
GUI: changed tooltip to be deleted when inactive
Before, it could be instantiated after an engine loaded and then was never deleted, causing memory fragmentation. Also removed inner tooltip call to the GuiManager runloop, which makes the logic simpler since the tooltip is a bit of a hack. I had to remove it because deleting _tooltip in the inner loop (called from tooltip itself) is trouble. svn-id: r54311
-rw-r--r--gui/Tooltip.cpp1
-rw-r--r--gui/gui-manager.cpp6
2 files changed, 5 insertions, 2 deletions
diff --git a/gui/Tooltip.cpp b/gui/Tooltip.cpp
index 067afb8246..457f53d011 100644
--- a/gui/Tooltip.cpp
+++ b/gui/Tooltip.cpp
@@ -72,7 +72,6 @@ bool Tooltip::tooltipModal(int x, int y) {
_y = MIN<int16>(g_gui.getTopDialog()->_y + y + _ydelta, g_gui.getHeight() - _h - 3);
open();
- g_gui.runLoop();
return true;
}
diff --git a/gui/gui-manager.cpp b/gui/gui-manager.cpp
index 5109539158..4e33c446eb 100644
--- a/gui/gui-manager.cpp
+++ b/gui/gui-manager.cpp
@@ -381,10 +381,14 @@ void GuiManager::runLoop() {
_tooltipCheck = false;
_tooltip->tooltipModal(_lastMousePosition.x, _lastMousePosition.y);
+ activeDialog = getTopDialog();
}
if (eventTookplace && _tooltip) {
_tooltip->mustClose();
+ delete _tooltip;
+ _tooltip = 0;
+ activeDialog = getTopDialog();
}
// Delay for a moment
@@ -399,7 +403,7 @@ void GuiManager::runLoop() {
_theme->disable();
restoreState();
_useStdCursor = false;
- }
+ }
}
#pragma mark -