gnash-commit
[Top][All Lists]
Advanced

[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;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]