vlc | branch: master | Hugo Beauzée-Luyssen <[email protected]> | Thu Mar 8 01:41:27 2012 +0100| [694f1911aabc828fe206984aa177879a304fb269] | committer: Jean-Baptiste Kempf
bluray: Hack to avoid crashing when changing title. Signed-off-by: Jean-Baptiste Kempf <[email protected]> > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=694f1911aabc828fe206984aa177879a304fb269 --- modules/access/bluray.c | 24 ++++++++++++++++++++++-- 1 files changed, 22 insertions(+), 2 deletions(-) diff --git a/modules/access/bluray.c b/modules/access/bluray.c index 4533ce5..d109ae8 100644 --- a/modules/access/bluray.c +++ b/modules/access/bluray.c @@ -310,8 +310,29 @@ static int blurayInitTitles(demux_t *p_demux ) return VLC_SUCCESS; } +static void blurayResetParser( demux_t *p_demux ) +{ + /* + * This is a hack and will have to be removed. + * The parser should be flushed, and not destroy/created each time + * we are changing title. + */ + demux_sys_t *p_sys = p_demux->p_sys; + if (!p_sys->p_parser) + return; + stream_Delete(p_sys->p_parser); + p_sys->p_parser = stream_DemuxNew(p_demux, "ts", p_demux->out); + if (!p_sys->p_parser) { + msg_Err(p_demux, "Failed to create TS demuxer"); + } +} + static void blurayUpdateTitle( demux_t *p_demux, int i_title ) { + blurayResetParser(p_demux); + if (i_title >= p_demux->p_sys->i_title) + return; + /* read title info and init some values */ p_demux->info.i_title = i_title; p_demux->info.i_seekpoint = 0; @@ -483,8 +504,7 @@ static void blurayHandleEvent( demux_t *p_demux, const BD_EVENT *e ) switch (e->event) { case BD_EVENT_TITLE: - if (e->param < p_sys->i_title) - blurayUpdateTitle( p_demux, e->param ); + blurayUpdateTitle( p_demux, e->param ); break; case BD_EVENT_PLAYITEM: break; _______________________________________________ vlc-commits mailing list [email protected] http://mailman.videolan.org/listinfo/vlc-commits
