diff options
Diffstat (limited to 'player')
-rw-r--r-- | player/loadfile.c | 6 | ||||
-rw-r--r-- | player/playloop.c | 9 | ||||
-rw-r--r-- | player/sub.c | 2 |
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 |