gnash-commit
[Top][All Lists]
Advanced

[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




reply via email to

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