From 4e767826303567f3ccd70c84b462b5dd0c140f6c Mon Sep 17 00:00:00 2001 From: wm4 Date: Fri, 10 Jul 2015 12:11:14 +0200 Subject: player: refactor chapter seek code mp_seek_chapter() had only 1 caller. Also the code was rather roundabout; the entire function can be compressed to 5 lines of code. (The new code is functionally the same - "mpctx->last_chapter_seek = -2;" was effectively a dead assingment.) --- player/command.c | 7 ++++++- player/core.h | 1 - player/playloop.c | 23 +---------------------- 3 files changed, 7 insertions(+), 24 deletions(-) diff --git a/player/command.c b/player/command.c index fb06cf1b33..c16f804883 100644 --- a/player/command.c +++ b/player/command.c @@ -762,7 +762,12 @@ static int mp_property_chapter(void *ctx, struct m_property *prop, mpctx->stop_play = PT_NEXT_ENTRY; } } else { - mp_seek_chapter(mpctx, chapter); + double pts = chapter_start_time(mpctx, chapter); + if (pts != MP_NOPTS_VALUE) { + queue_seek(mpctx, MPSEEK_ABSOLUTE, pts, MPSEEK_DEFAULT, true); + mpctx->last_chapter_seek = chapter; + mpctx->last_chapter_pts = pts; + } } return M_PROPERTY_OK; } diff --git a/player/core.h b/player/core.h index 885c2d2052..80cf7178dd 100644 --- a/player/core.h +++ b/player/core.h @@ -451,7 +451,6 @@ void unpause_player(struct MPContext *mpctx); void add_step_frame(struct MPContext *mpctx, int dir); void queue_seek(struct MPContext *mpctx, enum seek_type type, double amount, enum seek_precision exact, bool immediate); -bool mp_seek_chapter(struct MPContext *mpctx, int chapter); double get_time_length(struct MPContext *mpctx); double get_current_time(struct MPContext *mpctx); double get_playback_time(struct MPContext *mpctx); diff --git a/player/playloop.c b/player/playloop.c index 9cf19630b2..9ffeae6842 100644 --- a/player/playloop.c +++ b/player/playloop.c @@ -486,7 +486,7 @@ char *chapter_name(struct MPContext *mpctx, int chapter) return talloc_strdup(NULL, mpctx->chapters[chapter].name); } -// returns the start of the chapter in seconds (-1 if unavailable) +// returns the start of the chapter in seconds (NOPTS if unavailable) double chapter_start_time(struct MPContext *mpctx, int chapter) { if (chapter == -1) @@ -501,27 +501,6 @@ int get_chapter_count(struct MPContext *mpctx) return mpctx->num_chapters; } -// Seek to a given chapter. Queues the seek. -bool mp_seek_chapter(struct MPContext *mpctx, int chapter) -{ - int num = get_chapter_count(mpctx); - if (num == 0) - return false; - if (chapter < -1 || chapter >= num) - return false; - - mpctx->last_chapter_seek = -2; - - double pts = chapter_start_time(mpctx, chapter); - if (pts == MP_NOPTS_VALUE) - return false; - - queue_seek(mpctx, MPSEEK_ABSOLUTE, pts, MPSEEK_DEFAULT, true); - mpctx->last_chapter_seek = chapter; - mpctx->last_chapter_pts = pts; - return true; -} - static void handle_osd_redraw(struct MPContext *mpctx) { if (!mpctx->video_out || !mpctx->video_out->config_ok) -- cgit v1.2.3