[Top][All Lists]
[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);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Gnash-commit] gnash ChangeLog server/impl.cpp server/parser/m...,
Sandro Santilli <=