aboutsummaryrefslogtreecommitdiff
path: root/engines
diff options
context:
space:
mode:
authorJohannes Schickel2010-04-11 18:30:42 +0000
committerJohannes Schickel2010-04-11 18:30:42 +0000
commitb928da4418d7acf05cc1b0889b0142fee177681e (patch)
treecd1d4b8f19a6ea2c4fb2615db2f2e540a7866d05 /engines
parent19e620ba60cf08b8d039dff3777061da1a0b21b8 (diff)
downloadscummvm-rg350-b928da4418d7acf05cc1b0889b0142fee177681e.tar.gz
scummvm-rg350-b928da4418d7acf05cc1b0889b0142fee177681e.tar.bz2
scummvm-rg350-b928da4418d7acf05cc1b0889b0142fee177681e.zip
Setup and destroy a dummy cursor and palette in the Engine class.
The idea behind this is exactly the same as behind r48620, but it affects all engines, thus engine authors can now use CursorMan.replaceCursor without having to worry about possible memory leaks or the like. svn-id: r48626
Diffstat (limited to 'engines')
-rw-r--r--engines/engine.cpp21
-rw-r--r--engines/kyra/screen.cpp3
-rw-r--r--engines/scumm/scumm.cpp10
3 files changed, 19 insertions, 15 deletions
diff --git a/engines/engine.cpp b/engines/engine.cpp
index 8487a42d05..b7d2c40344 100644
--- a/engines/engine.cpp
+++ b/engines/engine.cpp
@@ -30,6 +30,9 @@
#endif
#include "engines/engine.h"
+#include "engines/dialogs.h"
+#include "engines/metaengine.h"
+
#include "common/config-manager.h"
#include "common/debug.h"
#include "common/events.h"
@@ -37,12 +40,14 @@
#include "common/timer.h"
#include "common/savefile.h"
#include "common/system.h"
+
#include "gui/debugger.h"
#include "gui/message.h"
#include "gui/GuiManager.h"
+
#include "sound/mixer.h"
-#include "engines/dialogs.h"
-#include "engines/metaengine.h"
+
+#include "graphics/cursorman.h"
#ifdef _WIN32_WCE
extern bool isSmartphone();
@@ -103,6 +108,14 @@ Engine::Engine(OSystem *syst)
// freed. Of course, there still would be problems with many games...
if (!_mixer->isReady())
warning("Sound initialization failed. This may cause severe problems in some games.");
+
+ // Setup a dummy cursor and palette, so that all engines can use CursorMan.replace
+ // without having any headaches about memory leaks. Check commit log of r48620 for
+ // some information about this.
+ CursorMan.pushCursor(NULL, 0, 0, 0, 0, 0);
+ // Note: Using this dummy palette will actually disable cursor palettes till the
+ // user enables it again.
+ CursorMan.pushCursorPalette(NULL, 0, 0);
}
Engine::~Engine() {
@@ -110,6 +123,10 @@ Engine::~Engine() {
delete _mainMenuDialog;
g_engine = NULL;
+
+ // Remove our cursors again to prevent memory leaks
+ CursorMan.popCursor();
+ CursorMan.popCursorPalette();
}
void initCommonGFX(bool defaultTo1XScaler) {
diff --git a/engines/kyra/screen.cpp b/engines/kyra/screen.cpp
index 0332e56e73..14463568ac 100644
--- a/engines/kyra/screen.cpp
+++ b/engines/kyra/screen.cpp
@@ -69,8 +69,6 @@ Screen::~Screen() {
for (uint i = 0; i < _palettes.size(); ++i)
delete _palettes[i];
-
- CursorMan.popCursor();
}
bool Screen::init() {
@@ -158,7 +156,6 @@ bool Screen::init() {
_animBlockPtr = NULL;
_animBlockSize = 0;
_mouseLockCount = 1;
- CursorMan.pushCursor(NULL, 0, 0, 0, 0, 0);
CursorMan.showMouse(false);
_forceFullUpdate = false;
diff --git a/engines/scumm/scumm.cpp b/engines/scumm/scumm.cpp
index a24fc650a5..5555d961b2 100644
--- a/engines/scumm/scumm.cpp
+++ b/engines/scumm/scumm.cpp
@@ -550,12 +550,6 @@ ScummEngine::ScummEngine(OSystem *syst, const DetectorResult &dr)
Common::addDebugChannel(debugChannels[i].flag, debugChannels[i].channel, debugChannels[i].desc);
g_eventRec.registerRandomSource(_rnd, "scumm");
-
- // Setup a dummy cursor and palette. The latter is only
- // required by HE, thus we might consider to do that only
- // for HE games.
- CursorMan.pushCursor(NULL, 0, 0, 0, 0, 0);
- CursorMan.pushCursorPalette(NULL, 0, 0);
}
@@ -612,10 +606,6 @@ ScummEngine::~ScummEngine() {
delete _res;
delete _gdi;
-
- // Remove our cursors again to prevent memory leaks
- CursorMan.popCursor();
- CursorMan.popCursorPalette();
}