vlc | branch: master | Francois Cartegnie <[email protected]> | Mon Mar 29 19:45:18 2021 +0200| [cb8ce20853ea44e6136183782bcd06960baa3203] | committer: Francois Cartegnie
demux: adaptive: fix deadlock regression on pause > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=cb8ce20853ea44e6136183782bcd06960baa3203 --- modules/demux/adaptive/PlaylistManager.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/demux/adaptive/PlaylistManager.cpp b/modules/demux/adaptive/PlaylistManager.cpp index e38e4d2fd6..1739ba57ba 100644 --- a/modules/demux/adaptive/PlaylistManager.cpp +++ b/modules/demux/adaptive/PlaylistManager.cpp @@ -540,12 +540,13 @@ int PlaylistManager::doControl(int i_query, va_list args) case DEMUX_SET_PAUSE_STATE: { - vlc_mutex_locker locker(&cached.lock); + setBufferingRunState(false); /* /!\ always stop buffering process first */ bool b_pause = (bool)va_arg(args, int); if(playlist->isLive()) { - setBufferingRunState(false); /* stop downloader first */ vlc_tick_t now = vlc_tick_now(); + demux.i_nzpcr = VLC_TICK_INVALID; + cached.lastupdate = 0; if(b_pause) { setLivePause(true); @@ -558,11 +559,10 @@ int PlaylistManager::doControl(int i_query, va_list args) msg_Dbg(p_demux,"Resuming buffering/playback after %" PRId64 "ms", MS_FROM_VLC_TICK(now-pause_start)); es_out_Control(p_demux->out, ES_OUT_RESET_PCR); + setBufferingRunState(true); } - setBufferingRunState(true); - demux.i_nzpcr = VLC_TICK_INVALID; - cached.lastupdate = 0; } + else setBufferingRunState(true); return VLC_SUCCESS; } @@ -593,7 +593,7 @@ int PlaylistManager::doControl(int i_query, va_list args) case DEMUX_SET_POSITION: { - setBufferingRunState(false); /* stop downloader first */ + setBufferingRunState(false); /* /!\ always stop buffering process first */ vlc_mutex_locker locker(&cached.lock); if(cached.playlistLength == 0) _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
