[Top][All Lists]
[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;