gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] gnash ChangeLog server/asobj/Stage.cpp server/a...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/asobj/Stage.cpp server/a...
Date: Fri, 03 Aug 2007 21:56:59 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/08/03 21:56:59

Modified files:
        .              : ChangeLog 
        server/asobj   : Stage.cpp Stage.h 

Log message:
                * server/asobj/Stage.{cpp,h}: Mark all listeners as reachable,
                  drop the unused dropDanglingListeners (since it's verified
                  the Stage doesn't store *weak* pointers).

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3942&r2=1.3943
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Stage.cpp?cvsroot=gnash&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/Stage.h?cvsroot=gnash&r1=1.9&r2=1.10

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.3942
retrieving revision 1.3943
diff -u -b -r1.3942 -r1.3943
--- ChangeLog   3 Aug 2007 21:44:31 -0000       1.3942
+++ ChangeLog   3 Aug 2007 21:56:58 -0000       1.3943
@@ -1,5 +1,11 @@
 2007-08-03 Sandro Santilli <address@hidden>
 
+       * server/asobj/Stage.{cpp,h}: Mark all listeners as reachable,
+         drop the unused dropDanglingListeners (since it's verified
+         the Stage doesn't store *weak* pointers).
+
+2007-08-03 Sandro Santilli <address@hidden>
+
        * server/movie_root.cpp (getStage): properly convert case when
          fetching the "Stage" object from SWF6 or lower.
        * server/asobj/Stage.cpp (onResize): properly convert case

Index: server/asobj/Stage.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Stage.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- server/asobj/Stage.cpp      3 Aug 2007 21:44:32 -0000       1.17
+++ server/asobj/Stage.cpp      3 Aug 2007 21:56:59 -0000       1.18
@@ -137,25 +137,6 @@
        _listeners.remove(obj);
 }
 
-/// Remove listeners with a refcount == 1
-//
-/// This function should be called before marking
-/// objects to keep alive (when GC gets in effect)
-///
-void
-Stage::dropDanglingListeners()
-{
-       // TODO: find a way to find dangling listeners
-#ifndef GNASH_USE_GC
-       for (ListenersList::iterator it=_listeners.begin(),
-                       itEnd=_listeners.end();
-                       it != itEnd; ++it)
-       {
-               if ( (*it)->get_ref_count() == 1 ) it=_listeners.erase(it);
-       }
-#endif
-}
-
 const char*
 Stage::getScaleModeString()
 {
@@ -302,4 +283,18 @@
        global.init_member("Stage", obj.get());
 }
 
+#ifdef GNASH_USE_GC
+void
+Stage::markReachableResources() const
+{
+        for (ListenersList::const_iterator i=_listeners.begin(), 
e=_listeners.end(); i!=e; ++i)
+        {
+                (*i)->setReachable();
+        }
+
+       // Invoke generic as_object marker
+       markAsObjectReachable();
+}
+#endif // def GNASH_USE_GC
+
 } // end of gnash namespace

Index: server/asobj/Stage.h
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/Stage.h,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -b -r1.9 -r1.10
--- server/asobj/Stage.h        1 Jul 2007 10:54:31 -0000       1.9
+++ server/asobj/Stage.h        3 Aug 2007 21:56:59 -0000       1.10
@@ -86,6 +86,13 @@
        ///
        const char* getScaleModeString();
 
+protected:
+
+#ifdef GNASH_USE_GC
+       /// Mark all Stage listeners as reachable
+       void markReachableResources() const;
+#endif 
+
 private:
 
        /// Notify all listeners about a resize event
@@ -99,13 +106,6 @@
        /// Notify an object about an resize event
        void notifyResize(boost::intrusive_ptr<as_object> obj, as_environment* 
env);
 
-       /// Remove listeners with a refcount == 1
-       //
-       /// This function should be called before marking
-       /// objects to keep alive (when GC gets in effect)
-       ///
-       void dropDanglingListeners();
-
        typedef std::list<boost::intrusive_ptr<as_object> > ListenersList;
 
        ListenersList _listeners;




reply via email to

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