From: Petri H. <phi...@us...> - 2014-12-07 12:30:34
|
# HG changeset patch # User Petri Hintukainen <phi...@us...> # Date 1417953784 -7200 # Node ID c7b6ebd7d6fb53ec36a55d9184072943a283f8dc # Branch default # Parent a77beb319c803b00be04966e1717d1e4ae07185e bluray: reset stream only once Fixes stopping playback when stream is seeked multiple times too fast. diff --git a/src/input/input_bluray.c b/src/input/input_bluray.c --- a/src/input/input_bluray.c +++ b/src/input/input_bluray.c @@ -176,6 +176,7 @@ uint8_t error : 1; uint8_t menu_open : 1; uint8_t stream_flushed : 1; + uint8_t stream_reset_done : 1; uint8_t demux_action_req : 1; uint8_t end_of_title : 1; uint8_t pg_enable : 1; @@ -644,7 +645,7 @@ static void stream_flush(bluray_input_plugin_t *this) { - if (this->stream_flushed || !this->stream) + if (!this || this->stream_flushed || !this->stream) return; lprintf("Stream flush\n"); @@ -664,7 +665,7 @@ static void stream_reset(bluray_input_plugin_t *this) { - if (!this || !this->stream) + if (!this || this->stream_reset_done || !this->stream) return; lprintf("Stream reset\n"); @@ -683,6 +684,7 @@ xine_event_send (this->stream, &event); this->demux_action_req = 1; + this->stream_reset_done = 1; } static void wait_secs(bluray_input_plugin_t *this, unsigned seconds) @@ -1165,6 +1167,7 @@ if (result > 0) { this->stream_flushed = 0; + this->stream_reset_done = 0; } return result; |