summaryrefslogtreecommitdiffstats
path: root/player
diff options
context:
space:
mode:
Diffstat (limited to 'player')
-rw-r--r--player/loadfile.c6
-rw-r--r--player/playloop.c9
-rw-r--r--player/sub.c2
3 files changed, 13 insertions, 4 deletions
diff --git a/player/loadfile.c b/player/loadfile.c
index 7fe7284e77..521a20d459 100644
--- a/player/loadfile.c
+++ b/player/loadfile.c
@@ -381,9 +381,9 @@ void reselect_demux_stream(struct MPContext *mpctx, struct track *track,
pts -= 10.0;
}
if (refresh_only)
- demuxer_refresh_track(track->demuxer, track->stream, pts);
+ demuxer_refresh_track(track->demuxer, track->stream, pts, mpctx->paused);
else
- demuxer_select_track(track->demuxer, track->stream, pts, track->selected);
+ demuxer_select_track(track->demuxer, track->stream, pts, track->selected, mpctx->paused);
}
static void enable_demux_thread(struct MPContext *mpctx, struct demuxer *demux)
@@ -1178,7 +1178,7 @@ static void *open_demux_thread(void *ctx)
int num_streams = demux_get_num_stream(demux);
for (int n = 0; n < num_streams; n++) {
struct sh_stream *sh = demux_get_stream(demux, n);
- demuxer_select_track(demux, sh, MP_NOPTS_VALUE, true);
+ demuxer_select_track(demux, sh, MP_NOPTS_VALUE, true, mpctx->paused);
}
demux_set_wakeup_cb(demux, wakeup_demux, mpctx);
diff --git a/player/playloop.c b/player/playloop.c
index 7a1c13f4ad..61d374a589 100644
--- a/player/playloop.c
+++ b/player/playloop.c
@@ -180,6 +180,15 @@ void set_pause_state(struct MPContext *mpctx, bool user_pause)
} else {
(void)get_relative_time(mpctx); // ignore time that passed during pause
}
+
+ if (mpctx->demuxer) {
+ double pts = get_current_time(mpctx);
+ for (int n = 0; n < num_ptracks[STREAM_SUB]; n++) {
+ struct track *track = mpctx->current_track[n][STREAM_SUB];
+ if (track)
+ demuxer_refresh_track(mpctx->demuxer, track->stream, pts, mpctx->paused);
+ }
+ }
}
update_core_idle_state(mpctx);
diff --git a/player/sub.c b/player/sub.c
index 7dd1f2ccb6..91627d8c22 100644
--- a/player/sub.c
+++ b/player/sub.c
@@ -100,7 +100,7 @@ static bool update_subtitle(struct MPContext *mpctx, double video_pts,
sub_preload(dec_sub);
}
- if (!sub_read_packets(dec_sub, video_pts, mpctx->paused))
+ if (!sub_read_packets(dec_sub, video_pts))
return false;
// Handle displaying subtitles on terminal; never done for secondary subs