[Scummvm-cvs-logs] SF.net SVN: scummvm:[55672] scummvm/trunk/engines/teenagent
tdhs at users.sourceforge.net
tdhs at users.sourceforge.net
Mon Jan 31 08:44:40 CET 2011
Revision: 55672
http://scummvm.svn.sourceforge.net/scummvm/?rev=55672&view=rev
Author: tdhs
Date: 2011-01-31 07:44:40 +0000 (Mon, 31 Jan 2011)
Log Message:
-----------
TEENAGENT: Fix Memory Leaks.
Modified Paths:
--------------
scummvm/trunk/engines/teenagent/inventory.cpp
scummvm/trunk/engines/teenagent/inventory.h
scummvm/trunk/engines/teenagent/scene.cpp
scummvm/trunk/engines/teenagent/scene.h
scummvm/trunk/engines/teenagent/surface.cpp
scummvm/trunk/engines/teenagent/surface.h
scummvm/trunk/engines/teenagent/teenagent.cpp
scummvm/trunk/engines/teenagent/teenagent.h
Modified: scummvm/trunk/engines/teenagent/inventory.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/inventory.cpp 2011-01-30 23:21:40 UTC (rev 55671)
+++ scummvm/trunk/engines/teenagent/inventory.cpp 2011-01-31 07:44:40 UTC (rev 55672)
@@ -33,7 +33,7 @@
namespace TeenAgent {
-void Inventory::init(TeenAgentEngine *engine) {
+Inventory::Inventory(TeenAgentEngine *engine) {
_engine = engine;
_active = false;
@@ -86,6 +86,10 @@
hovered_obj = selected_obj = NULL;
}
+Inventory::~Inventory() {
+ delete[] items;
+}
+
bool Inventory::has(byte item) const {
for (int i = 0; i < 24; ++i) {
if (inventory[i] == item)
Modified: scummvm/trunk/engines/teenagent/inventory.h
===================================================================
--- scummvm/trunk/engines/teenagent/inventory.h 2011-01-30 23:21:40 UTC (rev 55671)
+++ scummvm/trunk/engines/teenagent/inventory.h 2011-01-31 07:44:40 UTC (rev 55672)
@@ -38,7 +38,9 @@
class Inventory {
public:
- void init(TeenAgentEngine *engine);
+ Inventory(TeenAgentEngine *engine);
+ ~Inventory();
+
void render(Graphics::Surface *surface, int delta);
void clear();
Modified: scummvm/trunk/engines/teenagent/scene.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/scene.cpp 2011-01-30 23:21:40 UTC (rev 55671)
+++ scummvm/trunk/engines/teenagent/scene.cpp 2011-01-31 07:44:40 UTC (rev 55672)
@@ -37,14 +37,50 @@
namespace TeenAgent {
-Scene::Scene() : intro(false), _engine(NULL),
- _system(NULL),
- _id(0), ons(0),
+Scene::Scene(TeenAgentEngine *engine, OSystem *system) : intro(false), _id(0), ons(0),
orientation(kActorRight), actor_talking(false),
message_timer(0), message_first_frame(0), message_last_frame(0), message_animation(NULL),
- current_event(SceneEvent::kNone), hide_actor(false), callback(0), callback_timer(0),
- _fade_timer(0), _idle_timer(0) {}
+ current_event(SceneEvent::kNone), hide_actor(false), callback(0), callback_timer(0), _idle_timer(0) {
+ _engine = engine;
+ _system = system;
+ _fade_timer = 0;
+ on_enabled = true;
+
+ memset(palette, 0, sizeof(palette));
+ background.pixels = 0;
+
+ FilePack varia;
+ varia.open("varia.res");
+
+ Common::ScopedPtr<Common::SeekableReadStream> s(varia.getStream(1));
+ if (!s)
+ error("invalid resource data");
+
+ teenagent.load(s, Animation::kTypeVaria);
+ if (teenagent.empty())
+ error("invalid mark animation");
+
+ s.reset(varia.getStream(2));
+ if (!s)
+ error("invalid resource data");
+
+ teenagent_idle.load(s, Animation::kTypeVaria);
+ if (teenagent_idle.empty())
+ error("invalid mark animation");
+
+ varia.close();
+ loadObjectData();
+}
+
+Scene::~Scene() {
+ if (background.pixels)
+ background.free();
+
+ delete[] ons;
+ ons = 0;
+}
+
void Scene::warp(const Common::Point &_point, byte o) {
Common::Point point(_point);
position = point;
@@ -200,39 +236,6 @@
orientation = orient;
}
-
-void Scene::init(TeenAgentEngine *engine, OSystem *system) {
- _engine = engine;
- _system = system;
-
- _fade_timer = 0;
- on_enabled = true;
-
- memset(palette, 0, sizeof(palette));
-
- FilePack varia;
- varia.open("varia.res");
-
- Common::ScopedPtr<Common::SeekableReadStream> s(varia.getStream(1));
- if (!s)
- error("invalid resource data");
-
- teenagent.load(s, Animation::kTypeVaria);
- if (teenagent.empty())
- error("invalid mark animation");
-
- s.reset(varia.getStream(2));
- if (!s)
- error("invalid resource data");
-
- teenagent_idle.load(s, Animation::kTypeVaria);
- if (teenagent_idle.empty())
- error("invalid mark animation");
-
- varia.close();
- loadObjectData();
-}
-
void Scene::loadObjectData() {
Resources *res = Resources::instance();
@@ -300,8 +303,6 @@
return NULL;
}
-
-
byte *Scene::getOns(int id) {
Resources *res = Resources::instance();
return res->dseg.ptr(res->dseg.get_word(0xb4f5 + (id - 1) * 2));
@@ -465,7 +466,6 @@
return Resources::instance()->dseg.get_byte(addr);
}
-
void Scene::push(const SceneEvent &event) {
//debug(0, "push");
//event.dump();
@@ -1245,7 +1245,6 @@
return delay * 10;
}
-
void Scene::displayMessage(const Common::String &str, byte color, const Common::Point &pos) {
//assert(!str.empty());
//debug(0, "displayMessage: %s", str.c_str());
Modified: scummvm/trunk/engines/teenagent/scene.h
===================================================================
--- scummvm/trunk/engines/teenagent/scene.h 2011-01-30 23:21:40 UTC (rev 55671)
+++ scummvm/trunk/engines/teenagent/scene.h 2011-01-31 07:44:40 UTC (rev 55672)
@@ -125,11 +125,11 @@
class Scene {
public:
+ Scene(TeenAgentEngine *engine, OSystem *system);
+ ~Scene();
+
bool intro;
- Scene();
-
- void init(TeenAgentEngine *engine, OSystem *system);
void init(int id, const Common::Point &pos);
bool render(bool tick_game, bool tick_mark, uint32 message_delta);
int getId() const { return _id; }
Modified: scummvm/trunk/engines/teenagent/surface.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/surface.cpp 2011-01-30 23:21:40 UTC (rev 55671)
+++ scummvm/trunk/engines/teenagent/surface.cpp 2011-01-31 07:44:40 UTC (rev 55672)
@@ -32,6 +32,10 @@
Surface::Surface() : x(0), y(0) {
}
+Surface::~Surface() {
+ free();
+}
+
void Surface::load(Common::SeekableReadStream *stream, Type type) {
//debug(0, "load()");
free();
Modified: scummvm/trunk/engines/teenagent/surface.h
===================================================================
--- scummvm/trunk/engines/teenagent/surface.h 2011-01-30 23:21:40 UTC (rev 55671)
+++ scummvm/trunk/engines/teenagent/surface.h 2011-01-31 07:44:40 UTC (rev 55672)
@@ -38,6 +38,7 @@
uint16 x, y;
Surface();
+ ~Surface();
void load(Common::SeekableReadStream *stream, Type type);
Common::Rect render(Graphics::Surface *surface, int dx = 0, int dy = 0, bool mirror = false, Common::Rect src_rect = Common::Rect(), uint zoom = 256) const;
Modified: scummvm/trunk/engines/teenagent/teenagent.cpp
===================================================================
--- scummvm/trunk/engines/teenagent/teenagent.cpp 2011-01-30 23:21:40 UTC (rev 55671)
+++ scummvm/trunk/engines/teenagent/teenagent.cpp 2011-01-31 07:44:40 UTC (rev 55672)
@@ -50,8 +50,16 @@
TeenAgentEngine::TeenAgentEngine(OSystem *system, const ADGameDescription *gd) : Engine(system), action(kActionNone), _gameDescription(gd) {
music = new MusicPlayer();
+
+ console = 0;
}
+TeenAgentEngine::~TeenAgentEngine() {
+ delete music;
+
+ delete console;
+}
+
bool TeenAgentEngine::trySelectedObject() {
InventoryObject *inv = inventory->selectedObject();
if (inv == NULL)
@@ -458,13 +466,10 @@
Common::EventManager *_event = _system->getEventManager();
initGraphics(320, 200, false);
-
- scene = new Scene;
- inventory = new Inventory;
console = new Console(this);
- scene->init(this, _system);
- inventory->init(this);
+ scene = new Scene(this, _system);
+ inventory = new Inventory(this);
init();
Modified: scummvm/trunk/engines/teenagent/teenagent.h
===================================================================
--- scummvm/trunk/engines/teenagent/teenagent.h 2011-01-30 23:21:40 UTC (rev 55671)
+++ scummvm/trunk/engines/teenagent/teenagent.h 2011-01-31 07:44:40 UTC (rev 55672)
@@ -55,6 +55,7 @@
enum Action { kActionNone, kActionExamine, kActionUse };
TeenAgentEngine(OSystem *system, const ADGameDescription *gd);
+ ~TeenAgentEngine();
virtual Common::Error run();
virtual Common::Error loadGameState(int slot);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list