diff options
author | Petri Hintukainen <phintuka@users.sourceforge.net> | 2014-12-07 14:03:04 +0200 |
---|---|---|
committer | Petri Hintukainen <phintuka@users.sourceforge.net> | 2014-12-07 14:03:04 +0200 |
commit | cb33bd6215afb754e7187e84f7d5217e9776d45c (patch) | |
tree | 7ab01c07f2a33ef744730174fa238464c8c4510f /src | |
parent | fc3ba6c739642ac11bb23b8e5b4f3c650ddfb37e (diff) | |
download | xine-lib-cb33bd6215afb754e7187e84f7d5217e9776d45c.tar.gz xine-lib-cb33bd6215afb754e7187e84f7d5217e9776d45c.tar.bz2 |
bluray: reset stream only once
Fixes stopping playback when stream is seeked multiple times too fast.
Diffstat (limited to 'src')
-rw-r--r-- | src/input/input_bluray.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/src/input/input_bluray.c b/src/input/input_bluray.c index db448d3f0..a2acc0f61 100644 --- a/src/input/input_bluray.c +++ b/src/input/input_bluray.c @@ -176,6 +176,7 @@ typedef struct { 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 fifos_wait(bluray_input_plugin_t *this) 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_flush(bluray_input_plugin_t *this) 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 @@ static void stream_reset(bluray_input_plugin_t *this) 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 @@ static off_t bluray_plugin_read (input_plugin_t *this_gen, void *buf, off_t len) if (result > 0) { this->stream_flushed = 0; + this->stream_reset_done = 0; } return result; |