diff options
Diffstat (limited to 'stream')
-rw-r--r-- | stream/cache.c | 3 | ||||
-rw-r--r-- | stream/stream.c | 4 | ||||
-rw-r--r-- | stream/stream_lavf.c | 2 |
3 files changed, 6 insertions, 3 deletions
diff --git a/stream/cache.c b/stream/cache.c index 6bd729c6fa..90683aa6db 100644 --- a/stream/cache.c +++ b/stream/cache.c @@ -415,6 +415,9 @@ static bool control_needs_flush(int stream_ctrl) case STREAM_CTRL_AVSEEK: case STREAM_CTRL_SET_ANGLE: case STREAM_CTRL_SET_CURRENT_TITLE: + case STREAM_CTRL_RECONNECT: + case STREAM_CTRL_DVB_SET_CHANNEL: + case STREAM_CTRL_DVB_STEP_CHANNEL: return true; } return false; diff --git a/stream/stream.c b/stream/stream.c index 7b8050dec0..e9bbbc8412 100644 --- a/stream/stream.c +++ b/stream/stream.c @@ -384,7 +384,7 @@ static int stream_reconnect(stream_t *s) { #define MAX_RECONNECT_RETRIES 5 #define RECONNECT_SLEEP_MAX_MS 500 - if (!s->streaming) + if (!s->streaming || s->uncached_stream) return 0; if (!s->seekable) return 0; @@ -404,8 +404,6 @@ static int stream_reconnect(stream_t *s) return 0; s->eof = 1; - s->pos = 0; - s->buf_pos = s->buf_len = 0; int r = stream_control(s, STREAM_CTRL_RECONNECT, NULL); if (r == STREAM_UNSUPPORTED) diff --git a/stream/stream_lavf.c b/stream/stream_lavf.c index c84945eba7..afb92f279f 100644 --- a/stream/stream_lavf.c +++ b/stream/stream_lavf.c @@ -252,6 +252,8 @@ static int open_f(stream_t *stream) stream->close = close_f; // enable cache (should be avoided for files, but no way to detect this) stream->streaming = true; + stream->pos = 0; // reset specifically for STREAM_CTRL_RECONNECT + stream->buf_pos = stream->buf_len = 0; res = STREAM_OK; out: |