[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash backend/render_handler_tri.cpp backend/re...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash backend/render_handler_tri.cpp backend/re... |
Date: |
Tue, 03 Jul 2007 05:46:04 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 07/07/03 05:46:04
Modified files:
backend : render_handler_tri.cpp render_handler_tri.h
server/parser : character_def.cpp character_def.h
. : ChangeLog
Log message:
* backend/render_handler_tri.{cpp,h}: (tri_cache_manager): dont
leak
mesh sets.
* server/parser/character_def.{cpp,h}: don't leak
render cache managers.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_tri.cpp?cvsroot=gnash&r1=1.14&r2=1.15
http://cvs.savannah.gnu.org/viewcvs/gnash/backend/render_handler_tri.h?cvsroot=gnash&r1=1.11&r2=1.12
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/character_def.cpp?cvsroot=gnash&r1=1.6&r2=1.7
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/character_def.h?cvsroot=gnash&r1=1.13&r2=1.14
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3645&r2=1.3646
Patches:
Index: backend/render_handler_tri.cpp
===================================================================
RCS file: /sources/gnash/gnash/backend/render_handler_tri.cpp,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -b -r1.14 -r1.15
--- backend/render_handler_tri.cpp 1 Jul 2007 10:53:48 -0000 1.14
+++ backend/render_handler_tri.cpp 3 Jul 2007 05:46:02 -0000 1.15
@@ -18,7 +18,7 @@
//
//
-/* $Id: render_handler_tri.cpp,v 1.14 2007/07/01 10:53:48 bjacques Exp $ */
+/* $Id: render_handler_tri.cpp,v 1.15 2007/07/03 05:46:02 strk Exp $ */
#include "render_handler_tri.h"
@@ -346,5 +346,14 @@
assert(0); // not implemented (and currently not required for tri. renderers)
}
+tri_cache_manager::~tri_cache_manager()
+{
+ for (MeshSetList::iterator i=m_cached_meshes.begin(),
e=m_cached_meshes.end();
+ i != e; ++i)
+ {
+ delete *i;
+ }
+}
+
} // namespace gnash
Index: backend/render_handler_tri.h
===================================================================
RCS file: /sources/gnash/gnash/backend/render_handler_tri.h,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -b -r1.11 -r1.12
--- backend/render_handler_tri.h 1 Jul 2007 10:53:48 -0000 1.11
+++ backend/render_handler_tri.h 3 Jul 2007 05:46:02 -0000 1.12
@@ -18,7 +18,7 @@
//
//
-/* $Id: render_handler_tri.h,v 1.11 2007/07/01 10:53:48 bjacques Exp $ */
+/* $Id: render_handler_tri.h,v 1.12 2007/07/03 05:46:02 strk Exp $ */
#ifndef GNASH_RENDER_HANDLER_TRI_H
#define GNASH_RENDER_HANDLER_TRI_H
@@ -54,21 +54,33 @@
/// that's still acceptable when viewed.
/// To draw these meshes they still have to be transformed using the desired
/// matrix!
- std::vector <mesh_set*> m_cached_meshes;
+ ///
+ /// This instance owns the mesh_sets
+ ///
+ typedef std::vector <mesh_set*> MeshSetList;
+ MeshSetList m_cached_meshes;
public:
/// Searches a mesh set with a error tolerance below max_error.
/// Returns NULL when no candidate could be found.
+ /// Ownership is NOT transferred
mesh_set* search_candidate(float max_error);
/// Adds a mesh set to the cache.
+ //
+ /// Transfer ownerhips of the mesh_set.
+ /// TODO: take an auto_ptr
+ ///
void add(mesh_set* m);
/// Maintain cached meshes. Clean out mesh_sets that haven't been used
/// recently, and make sure they're sorted from high error to low error.
void sort_and_clean_meshes();
+ /// Drop all cached meshes
+ virtual ~tri_cache_manager();
+
}; // class tri_cache_manager
Index: server/parser/character_def.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/character_def.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -b -r1.6 -r1.7
--- server/parser/character_def.cpp 1 Jul 2007 10:54:33 -0000 1.6
+++ server/parser/character_def.cpp 3 Jul 2007 05:46:02 -0000 1.7
@@ -19,7 +19,7 @@
//
//
-/* $Id: character_def.cpp,v 1.6 2007/07/01 10:54:33 bjacques Exp $ */
+/* $Id: character_def.cpp,v 1.7 2007/07/03 05:46:02 strk Exp $ */
#ifdef HAVE_CONFIG_H
#include "config.h"
@@ -27,6 +27,7 @@
#include "character_def.h"
#include "generic_character.h"
+#include "render_handler.h" // for destruction of render_cache_manager
namespace gnash
{
@@ -37,8 +38,13 @@
return new generic_character(this, parent, id);
}
+character_def::~character_def()
+{
+ delete m_render_cache;
}
+} // end of namespace gnash
+
// Local Variables:
// mode: C++
// indent-tabs-mode: t
Index: server/parser/character_def.h
===================================================================
RCS file: /sources/gnash/gnash/server/parser/character_def.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -b -r1.13 -r1.14
--- server/parser/character_def.h 1 Jul 2007 10:54:33 -0000 1.13
+++ server/parser/character_def.h 3 Jul 2007 05:46:03 -0000 1.14
@@ -61,7 +61,7 @@
{
}
- virtual ~character_def() {}
+ virtual ~character_def();
virtual void display(character* /*instance_info*/)
{
@@ -118,6 +118,11 @@
public:
/// Cache holder for renderer (contents depend on renderer handler)
+ /// Will be deleted by destructor of the character_def.
+ /// We could store by auto_ptr, but I'm afraid that would mean
+ /// including render_handler.h in this header, which I don't like.
+ /// (REF: PIMPL)
+ ///
render_cache_manager* m_render_cache;
};
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.3645
retrieving revision 1.3646
diff -u -b -r1.3645 -r1.3646
--- ChangeLog 3 Jul 2007 04:31:58 -0000 1.3645
+++ ChangeLog 3 Jul 2007 05:46:03 -0000 1.3646
@@ -1,3 +1,10 @@
+2007-07-03 Sandro Santilli <address@hidden>
+
+ * backend/render_handler_tri.{cpp,h}: (tri_cache_manager): dont leak
+ mesh sets.
+ * server/parser/character_def.{cpp,h}: don't leak
+ render cache managers.
+
2007-07-02 Sandro Santilli <address@hidden>
* backend/sound_handler_sdl.{cpp,h}: fix leak of sound_data instances;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash backend/render_handler_tri.cpp backend/re...,
Sandro Santilli <=