gnash-commit
[Top][All Lists]
Advanced

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

[Gnash-commit] gnash ChangeLog server/asobj/NetStreamFfmpeg.cp...


From: Sandro Santilli
Subject: [Gnash-commit] gnash ChangeLog server/asobj/NetStreamFfmpeg.cp...
Date: Wed, 21 May 2008 14:43:33 +0000

CVSROOT:        /sources/gnash
Module name:    gnash
Changes by:     Sandro Santilli <strk>  08/05/21 14:43:33

Modified files:
        .              : ChangeLog 
        server/asobj   : NetStreamFfmpeg.cpp NetStreamFfmpeg.h 

Log message:
                * server/asobj/NetStreamFfmpeg.{cpp,h}: use a barrier
                  to wait for start of decoder thread.

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/gnash/ChangeLog?cvsroot=gnash&r1=1.6666&r2=1.6667
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/NetStreamFfmpeg.cpp?cvsroot=gnash&r1=1.126&r2=1.127
http://cvs.savannah.gnu.org/viewcvs/gnash/server/asobj/NetStreamFfmpeg.h?cvsroot=gnash&r1=1.64&r2=1.65

Patches:
Index: ChangeLog
===================================================================
RCS file: /sources/gnash/gnash/ChangeLog,v
retrieving revision 1.6666
retrieving revision 1.6667
diff -u -b -r1.6666 -r1.6667
--- ChangeLog   21 May 2008 13:59:46 -0000      1.6666
+++ ChangeLog   21 May 2008 14:43:31 -0000      1.6667
@@ -1,3 +1,8 @@
+2008-05-21 Sandro Santilli <address@hidden>
+
+       * server/asobj/NetStreamFfmpeg.{cpp,h}: use a barrier
+         to wait for start of decoder thread.
+
 2008-05-21 Benjamin Wolsey <address@hidden>
 
        * gui/Player.cpp: register FScommand callback again.

Index: server/asobj/NetStreamFfmpeg.cpp
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/NetStreamFfmpeg.cpp,v
retrieving revision 1.126
retrieving revision 1.127
diff -u -b -r1.126 -r1.127
--- server/asobj/NetStreamFfmpeg.cpp    19 May 2008 13:03:54 -0000      1.126
+++ server/asobj/NetStreamFfmpeg.cpp    21 May 2008 14:43:32 -0000      1.127
@@ -73,6 +73,7 @@
        m_Frame(NULL),
 
        _decodeThread(NULL),
+       _decodeThreadBarrier(2), // main and decoder threads
 
        m_last_video_timestamp(0),
        m_last_audio_timestamp(0),
@@ -117,12 +118,14 @@
                        break;
   }
 
+#if 0 // we don't want to start _decodeThread so naively...
   if ( !m_pause && !m_go ) {
     setStatus( playStart );
     m_go = true;
 
     _decodeThread = new boost::thread( 
boost::bind(NetStreamFfmpeg::av_streamer, this) );
   }
+#endif
 }
 
 void NetStreamFfmpeg::close()
@@ -266,6 +269,7 @@
 
        // This starts the decoding thread
        _decodeThread = new 
boost::thread(boost::bind(NetStreamFfmpeg::av_streamer, this)); 
+       _decodeThreadBarrier.wait();
 
        return;
 }
@@ -632,12 +636,7 @@
 {
        //GNASH_REPORT_FUNCTION;
 
-       // This should only happen if close() is called before this thread is 
ready
-       if (!ns->m_go)
-       {
-               log_debug("av_streamer: !ns->m_go, returning");
-               return;
-       }
+       ns->_decodeThreadBarrier.wait();
 
        if (!ns->m_ACodecCtx && !ns->m_VCodecCtx && !ns->m_FormatCtx)
        {

Index: server/asobj/NetStreamFfmpeg.h
===================================================================
RCS file: /sources/gnash/gnash/server/asobj/NetStreamFfmpeg.h,v
retrieving revision 1.64
retrieving revision 1.65
diff -u -b -r1.64 -r1.65
--- server/asobj/NetStreamFfmpeg.h      12 May 2008 11:54:37 -0000      1.64
+++ server/asobj/NetStreamFfmpeg.h      21 May 2008 14:43:33 -0000      1.65
@@ -34,6 +34,7 @@
 #include <boost/bind.hpp> 
 #include <boost/thread/mutex.hpp>
 #include <boost/thread/condition.hpp>
+#include <boost/thread/barrier.hpp>
 
 #include "impl.h"
 
@@ -224,6 +225,9 @@
        // The decoding thread
        boost::thread* _decodeThread;
 
+       // Barrier to synchronize thread and thread starter
+       boost::barrier _decodeThreadBarrier;
+
        // The timestamp of the last decoded video frame, in seconds.
        volatile boost::uint32_t m_last_video_timestamp;
 




reply via email to

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