gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/movie_instance.cpp serve...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/movie_instance.cpp serve...
Date: Tue, 10 Apr 2007 16:17:55 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  07/04/10 16:17:54

Modified files:
        .              : ChangeLog 
        server         : movie_instance.cpp 
        server/parser  : movie_def_impl.cpp 

Log message:
                * server/parser/movie_def_impl.cpp (read_all_swf): at
                  end of parsing, check consistency of number of frames
                  advertised in header and number of frames read from the
                  stream. Update total frame count if needed and properly
                  wake up any frame reached condition waiters.
                * server/movie_instance.cpp (advance) check return from
                  ensure_frame_loaded.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.2826&r2=1.2827
http://cvs.savannah.gnu.org/viewcvs/gnash/server/movie_instance.cpp?cvsroot=gnash&r1=1.8&r2=1.9
http://cvs.savannah.gnu.org/viewcvs/gnash/server/parser/movie_def_impl.cpp?cvsroot=gnash&r1=1.63&r2=1.64

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.2826
retrieving revision 1.2827
diff -u -b -r1.2826 -r1.2827
--- ChangeLog   10 Apr 2007 15:48:39 -0000      1.2826
+++ ChangeLog   10 Apr 2007 16:17:54 -0000      1.2827
@@ -1,5 +1,15 @@
 2007-04-10 Sandro Santilli <address@hidden>
 
+       * server/parser/movie_def_impl.cpp (read_all_swf): at
+         end of parsing, check consistency of number of frames 
+         advertised in header and number of frames read from the
+         stream. Update total frame count if needed and properly
+         wake up any frame reached condition waiters.
+       * server/movie_instance.cpp (advance) check return from
+         ensure_frame_loaded.
+
+2007-04-10 Sandro Santilli <address@hidden>
+
        * server/parser/: movie_definition.h, movie_def_impl.{cpp,h},
          sprite_definition.{cpp,h}: stop using TU legacy hashes
          and strings: use std::string instead of C strings, use

Index: server/movie_instance.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/movie_instance.cpp,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -b -r1.8 -r1.9
--- server/movie_instance.cpp   15 Feb 2007 11:14:52 -0000      1.8
+++ server/movie_instance.cpp   10 Apr 2007 16:17:54 -0000      1.9
@@ -65,8 +65,11 @@
        // We do this inside advance_root to make sure
        // it's only for a root sprite (not a sprite defined
        // by DefineSprite!)
-       _def->ensure_frame_loaded(min(get_current_frame()+2,
-               get_frame_count()));
+       size_t nextframe = min(get_current_frame()+2, get_frame_count());
+       if ( !_def->ensure_frame_loaded(nextframe) )
+       {
+               log_error("Frame " SIZET_FMT " never loaded", nextframe);
+       }
 
        if (m_on_event_load_called == false)
        {

Index: server/parser/movie_def_impl.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/parser/movie_def_impl.cpp,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -b -r1.63 -r1.64
--- server/parser/movie_def_impl.cpp    10 Apr 2007 15:48:39 -0000      1.63
+++ server/parser/movie_def_impl.cpp    10 Apr 2007 16:17:54 -0000      1.64
@@ -559,7 +559,7 @@
 movie_def_impl::ensure_frame_loaded(size_t framenum)
 {
 #ifndef LOAD_MOVIES_IN_A_SEPARATE_THREAD 
-       assert ( framenum <= _frames_loaded );
+       return ( framenum <= _frames_loaded );
 #endif
 
        boost::mutex::scoped_lock lock(_frames_loaded_mutex);
@@ -574,7 +574,7 @@
 
         //log_msg("Condition reached (_frames_loaded=%u)", _frames_loaded);
 
-       return true;
+       return ( framenum <= _frames_loaded );
 }
 
 
@@ -934,6 +934,18 @@
                );
        }
 
+       if ( m_frame_count > _frames_loaded )
+       {
+               IF_VERBOSE_MALFORMED_SWF(
+               log_swferror(SIZET_FMT " frames advertised in header, but only 
" SIZET_FMT " SHOWFRAME tags "
+                       "found in stream. Updating total frames count", 
m_frame_count, _frames_loaded);
+               );
+               boost::mutex::scoped_lock lock(_frames_loaded_mutex);
+               m_frame_count = _frames_loaded;
+               // Notify any thread waiting on frame reached condition
+               _frame_reached_condition.notify_all();
+       }
+
 }
 
 size_t




reply via email to

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