From: Petri Hintukainen Date: Mon, 10 Feb 2014 11:27:00 +0000 (+0200) Subject: bluray: always handle all libbluray events X-Git-Url: https://git.sesse.net/?p=vlc;a=commitdiff_plain;h=a799b4d6e6f67647507df2236e020c4e93d3ec7e bluray: always handle all libbluray events Events can be returned even if read returns <= 0. Single bd_read_ext() call can trigger multiple events. All events should be handled before next bd_read_ext() call, events are tied to current read position. Signed-off-by: Jean-Baptiste Kempf --- diff --git a/modules/access/bluray.c b/modules/access/bluray.c index 9edf4d169c..652ba6f22c 100644 --- a/modules/access/bluray.c +++ b/modules/access/bluray.c @@ -1540,6 +1540,10 @@ static int blurayDemux(demux_t *p_demux) } else { nread = bd_read_ext(p_sys->bluray, p_block->p_buffer, NB_TS_PACKETS * BD_TS_PACKET_SIZE, &e); + while (e.event != BD_EVENT_NONE) { + blurayHandleEvent(p_demux, &e); + bd_get_event(p_sys->bluray, &e); + } if (nread < 0) { block_Release(p_block); return -1; @@ -1547,8 +1551,6 @@ static int blurayDemux(demux_t *p_demux) if (nread == 0) { if (e.event == BD_EVENT_NONE) msg_Info(p_demux, "We reached the end of a title"); - else - blurayHandleEvent(p_demux, &e); block_Release(p_block); return 1; }