[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