vlc | branch: master | Francois Cartegnie <fcvlc...@free.fr> | Tue May 12 18:23:57 2015 +0200| [381b34a56e0bf8e8f554f21ee781928e80c55c8f] | committer: Francois Cartegnie
demux: adaptative: fix double lock on flush > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=381b34a56e0bf8e8f554f21ee781928e80c55c8f --- modules/demux/adaptative/Streams.cpp | 9 +++++++-- modules/demux/adaptative/Streams.hpp | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/modules/demux/adaptative/Streams.cpp b/modules/demux/adaptative/Streams.cpp index e0a8af5..3570b2f 100644 --- a/modules/demux/adaptative/Streams.cpp +++ b/modules/demux/adaptative/Streams.cpp @@ -327,6 +327,12 @@ void AbstractStreamOutput::setPosition(mtime_t nztime) void AbstractStreamOutput::sendToDecoder(mtime_t nzdeadline) { vlc_mutex_lock(&lock); + sendToDecoderUnlocked(nzdeadline); + vlc_mutex_unlock(&lock); +} + +void AbstractStreamOutput::sendToDecoderUnlocked(mtime_t nzdeadline) +{ std::list<Demuxed *>::const_iterator it; for(it=queues.begin(); it!=queues.end();++it) { @@ -343,7 +349,6 @@ void AbstractStreamOutput::sendToDecoder(mtime_t nzdeadline) realdemux->out->pf_send(realdemux->out, pair->es_id, p_block); } } - vlc_mutex_unlock(&lock); } AbstractStreamOutput::Demuxed::Demuxed() @@ -411,7 +416,7 @@ void AbstractStreamOutput::esOutDel(es_out_t *fakees, es_out_id_t *p_es) { if((*it)->es_id == p_es) { - me->sendToDecoder(INT64_MAX - VLC_TS_0); + me->sendToDecoderUnlocked(INT64_MAX - VLC_TS_0); delete *it; me->queues.erase(it); break; diff --git a/modules/demux/adaptative/Streams.hpp b/modules/demux/adaptative/Streams.hpp index 59e6428..370976e 100644 --- a/modules/demux/adaptative/Streams.hpp +++ b/modules/demux/adaptative/Streams.hpp @@ -124,6 +124,7 @@ namespace adaptative }; std::list<Demuxed *> queues; vlc_mutex_t lock; + void sendToDecoderUnlocked(mtime_t); }; class MP4StreamOutput : public AbstractStreamOutput _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits