summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--stream/cache.c3
-rw-r--r--stream/stream.c4
-rw-r--r--stream/stream_lavf.c2
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: