gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/impl.cpp server/parser/m...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/impl.cpp server/parser/m...
Date: Sat, 30 Jun 2007 18:22:01 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/06/30 18:22:01

Modified files:
        .              : ChangeLog 
        server         : impl.cpp 
        server/parser  : movie_def_impl.cpp movie_def_impl.h 

Log message:
                * server/impl.cpp (clear): don't exit, try the proper cleanup 
way;
                  movie_def_impl loader should be ready, other threads likely 
aren't,
                  this patch would expose all places in need for proper 
implementation
                  of threads termination.
                * server/parser/movie_def_impl.{cpp,h}: implement
                  loader thread cancelation request, wait for the thread
                  to terminate in MovieLoader destructor.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.3623&r2=1.3624
http://cvs.savannah.gnu.org/viewcvs/gnash/server/impl.cpp?cvsroot=gnash&r1=1.110&r2=1.111
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/movie_def_impl.cpp?cvsroot=gnash&r1=1.73&r2=1.74
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/movie_def_impl.h?cvsroot=gnash&r1=1.47&r2=1.48

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.3623
retrieving revision 1.3624
diff -u -b -r1.3623 -r1.3624
--- ChangeLog   30 Jun 2007 16:52:53 -0000      1.3623
+++ ChangeLog   30 Jun 2007 18:22:00 -0000      1.3624
@@ -1,5 +1,15 @@
 2007-06-30 Sandro Santilli <address@hidden>
 
+       * server/impl.cpp (clear): don't exit, try the proper cleanup way;
+         movie_def_impl loader should be ready, other threads likely aren't,
+         this patch would expose all places in need for proper implementation
+         of threads termination.
+       * server/parser/movie_def_impl.{cpp,h}: implement
+         loader thread cancelation request, wait for the thread
+         to terminate in MovieLoader destructor.
+
+2007-06-30 Sandro Santilli <address@hidden>
+
        * libbase/ref_counted.h: remove inheritance of ref_counted
          from GcResource, provide temporary isReachable/setReachable
          to allow not reverting all GC-related additions to character

Index: server/impl.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/impl.cpp,v
retrieving revision 1.110
retrieving revision 1.111
diff -u -b -r1.110 -r1.111
--- server/impl.cpp     23 Jun 2007 12:34:32 -0000      1.110
+++ server/impl.cpp     30 Jun 2007 18:22:01 -0000      1.111
@@ -17,7 +17,7 @@
 // Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 //
 
-/* $Id: impl.cpp,v 1.110 2007/06/23 12:34:32 bjacques Exp $ */
+/* $Id: impl.cpp,v 1.111 2007/06/30 18:22:01 strk Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -571,7 +571,7 @@
     // See task task #6959 and depending items
     //
     std::cerr << "Any segfault past this message is likely due to improper 
threads cleanup." << std::endl;
-    exit(EXIT_SUCCESS);
+    //exit(EXIT_SUCCESS);
 
     clear_library();
     fontlib::clear();

Index: server/parser/movie_def_impl.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/movie_def_impl.cpp,v
retrieving revision 1.73
retrieving revision 1.74
diff -u -b -r1.73 -r1.74
--- server/parser/movie_def_impl.cpp    16 Jun 2007 06:55:56 -0000      1.73
+++ server/parser/movie_def_impl.cpp    30 Jun 2007 18:22:01 -0000      1.74
@@ -81,6 +81,9 @@
 
 MovieLoader::~MovieLoader()
 {
+       // we should assert _movie_def._loadingCanceled
+       // but we're not friend yet (anyone introduce us ?)
+       if ( _thread ) _thread->join();
 }
 
 bool
@@ -205,12 +208,16 @@
        _frame_reached_condition(),
        _waiting_for_frame(0),
        m_jpeg_in(0),
-       _loader(*this)
+       _loader(*this),
+       _loadingCanceled(false)
 {
 }
 
 movie_def_impl::~movie_def_impl()
 {
+       // Request cancelation of the loading thread
+       _loadingCanceled = true;
+
     // Release our playlist data.
     {for (size_t i = m_playlist.size() - 1; i != static_cast<size_t>(-1); i--) 
// Optimized
         {
@@ -832,6 +839,11 @@
        //size_t it=0;
        while ( (uint32_t) str.get_position() < _swf_end_pos )
        {
+               if ( _loadingCanceled )
+               {
+                       log_debug("Loading thread cancelation requested, 
returning from read_all_swf");
+                       return;
+               }
 
                //log_msg(_("Loading thread iteration %u"), it++);
 

Index: server/parser/movie_def_impl.h
===================================================================
RCS file: /sources/gnash/gnash/server/parser/movie_def_impl.h,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -b -r1.47 -r1.48
--- server/parser/movie_def_impl.h      18 Jun 2007 09:33:06 -0000      1.47
+++ server/parser/movie_def_impl.h      30 Jun 2007 18:22:01 -0000      1.48
@@ -318,6 +318,9 @@
        ///
        Timeline _timeline;
 
+       /// A flag set to true when load cancelation is requested
+       bool _loadingCanceled;
+
 public:
 
        movie_def_impl(create_bitmaps_flag cbf, create_font_shapes_flag cfs);




reply via email to

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