[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Gnash-commit] gnash ChangeLog server/parser/movie_def_impl.cp...
From: |
Sandro Santilli |
Subject: |
[Gnash-commit] gnash ChangeLog server/parser/movie_def_impl.cp... |
Date: |
Thu, 30 Nov 2006 13:32:46 +0000 |
CVSROOT: /sources/gnash
Module name: gnash
Changes by: Sandro Santilli <strk> 06/11/30 13:32:45
Modified files:
. : ChangeLog
server/parser : movie_def_impl.cpp movie_def_impl.h
Log message:
* server/parser/movie_def_impl.{h,cpp}: implement
a thread-safe get_bytes_loaded taking seek-backs
into account.
CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.1827&r2=1.1828
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/movie_def_impl.cpp?cvsroot=gnash&r1=1.50&r2=1.51
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/movie_def_impl.h?cvsroot=gnash&r1=1.24&r2=1.25
Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.1827
retrieving revision 1.1828
diff -u -b -r1.1827 -r1.1828
--- ChangeLog 30 Nov 2006 13:25:42 -0000 1.1827
+++ ChangeLog 30 Nov 2006 13:32:45 -0000 1.1828
@@ -1,5 +1,11 @@
2006-11-30 Sandro Santilli <address@hidden>
+ * server/parser/movie_def_impl.{h,cpp}: implement
+ a thread-safe get_bytes_loaded taking seek-backs
+ into account.
+
+2006-11-30 Sandro Santilli <address@hidden>
+
* server/parser/Makefile.am: added BOOST_LIBS as
we now use boost threads.
* server/parser/movie_def_impl.{h,cpp}: be less
Index: server/parser/movie_def_impl.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/movie_def_impl.cpp,v
retrieving revision 1.50
retrieving revision 1.51
diff -u -b -r1.50 -r1.51
--- server/parser/movie_def_impl.cpp 30 Nov 2006 13:25:42 -0000 1.50
+++ server/parser/movie_def_impl.cpp 30 Nov 2006 13:32:45 -0000 1.51
@@ -485,7 +485,8 @@
/* Markus: Probably this is better anyways */
- if(m_frame_count == 0)m_frame_count++;
+ // TODO: This seems dangerous, check closely
+ if(m_frame_count == 0) m_frame_count++;
m_playlist.resize(m_frame_count);
m_init_action_list.resize(m_frame_count);
@@ -496,6 +497,7 @@
m_frame_rate, m_frame_count);
);
+ setBytesLoaded(in->get_position());
return true;
}
@@ -891,6 +893,8 @@
str.close_tag();
+ setBytesLoaded(str.get_position());
+
if (tag_type == SWF::END)
{
if ((unsigned int) str.get_position() != _swf_end_pos)
Index: server/parser/movie_def_impl.h
===================================================================
RCS file: /sources/gnash/gnash/server/parser/movie_def_impl.h,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -b -r1.24 -r1.25
--- server/parser/movie_def_impl.h 30 Nov 2006 13:25:42 -0000 1.24
+++ server/parser/movie_def_impl.h 30 Nov 2006 13:32:45 -0000 1.25
@@ -244,6 +244,18 @@
///
size_t _waiting_for_frame;
+ /// Number bytes loaded / parsed
+ unsigned long _bytes_loaded;
+
+ /// A mutex protecting access to _bytes_loaded
+ //
+ /// This is needed because the loader thread will
+ /// increment this number, while the virtual machine
+ /// thread will read it.
+ ///
+ mutable boost::mutex _bytes_loaded_mutex;
+
+
int m_loading_sound_stream;
uint32 m_file_length;
@@ -272,6 +284,16 @@
///
void incrementLoadedFrames();
+ /// Set number of bytes loaded from input stream
+ //
+ /// NOTE: this method locks _bytes_loaded_mutex
+ ///
+ void setBytesLoaded(unsigned long bytes)
+ {
+ boost::mutex::scoped_lock lock(_bytes_loaded_mutex);
+ _bytes_loaded=bytes;
+ }
+
public:
movie_def_impl(create_bitmaps_flag cbf, create_font_shapes_flag cfs);
@@ -308,13 +330,12 @@
/// Get number of bytes loaded from input stream
//
- // FIXME: use a member for bytes loaded, as seek-backs
- // are common... also, protect the member with
- // a mutex
- //
- size_t get_bytes_loaded() const {
- // we assume seek-backs are disabled
- return _str->get_position();
+ /// NOTE: this method locks _bytes_loaded_mutex
+ ///
+ size_t get_bytes_loaded() const
+ {
+ boost::mutex::scoped_lock lock(_bytes_loaded_mutex);
+ return _bytes_loaded;
}
/// Get total number of bytes in input stream