diff options
-rw-r--r-- | player/core.h | 1 | ||||
-rw-r--r-- | player/loadfile.c | 10 |
2 files changed, 6 insertions, 5 deletions
diff --git a/player/core.h b/player/core.h index e23699127d..4aad52ceb5 100644 --- a/player/core.h +++ b/player/core.h @@ -385,7 +385,6 @@ void mp_mark_user_track_selection(struct MPContext *mpctx, int order, enum stream_type type); struct track *mp_track_by_tid(struct MPContext *mpctx, enum stream_type type, int tid); -bool timeline_set_part(struct MPContext *mpctx, int i, bool force); double timeline_set_from_time(struct MPContext *mpctx, double pts, bool *need_reset); void add_demuxer_tracks(struct MPContext *mpctx, struct demuxer *demuxer); bool mp_remove_track(struct MPContext *mpctx, struct track *track); diff --git a/player/loadfile.c b/player/loadfile.c index e3e1b4fa30..08077262de 100644 --- a/player/loadfile.c +++ b/player/loadfile.c @@ -270,13 +270,13 @@ static void enable_demux_thread(struct MPContext *mpctx) } } -bool timeline_set_part(struct MPContext *mpctx, int i, bool force) +static bool timeline_set_part(struct MPContext *mpctx, int i, bool initial) { struct timeline_part *p = mpctx->timeline + mpctx->timeline_part; struct timeline_part *n = mpctx->timeline + i; mpctx->timeline_part = i; mpctx->video_offset = n->start - n->source_start; - if (n->source == p->source && !force) + if (n->source == p->source && !initial) return false; uninit_audio_chain(mpctx); @@ -313,9 +313,11 @@ bool timeline_set_part(struct MPContext *mpctx, int i, bool force) } } } - reselect_demux_streams(mpctx); - enable_demux_thread(mpctx); + if (!initial) { + reselect_demux_streams(mpctx); + enable_demux_thread(mpctx); + } return true; } |