diff options
Diffstat (limited to 'player')
-rw-r--r-- | player/command.c | 16 | ||||
-rw-r--r-- | player/loadfile.c | 2 |
2 files changed, 7 insertions, 11 deletions
diff --git a/player/command.c b/player/command.c index 938d9fa988..fd5ad60891 100644 --- a/player/command.c +++ b/player/command.c @@ -2705,26 +2705,22 @@ static int mp_property_playlist_pos_x(void *ctx, struct m_property *prop, { MPContext *mpctx = ctx; struct playlist *pl = mpctx->playlist; - if (!pl->num_entries) - return M_PROPERTY_UNAVAILABLE; switch (action) { case M_PROPERTY_GET: { int pos = playlist_entry_to_index(pl, pl->current); - if (pos < 0) - return M_PROPERTY_UNAVAILABLE; - *(int *)arg = pos + base; + *(int *)arg = pos < 0 ? -1 : pos + base; return M_PROPERTY_OK; } case M_PROPERTY_SET: { int pos = *(int *)arg - base; - struct playlist_entry *e = playlist_entry_from_index(pl, pos); - if (!e) - return M_PROPERTY_ERROR; - mp_set_playlist_entry(mpctx, e); + mp_set_playlist_entry(mpctx, playlist_entry_from_index(pl, pos)); return M_PROPERTY_OK; } - case M_PROPERTY_GET_TYPE: { + case M_PROPERTY_GET_TYPE: + *(struct m_option *)arg = (struct m_option){.type = CONF_TYPE_INT}; + return M_PROPERTY_OK; + case M_PROPERTY_GET_CONSTRICTED_TYPE: { struct m_option opt = { .type = CONF_TYPE_INT, .min = base, diff --git a/player/loadfile.c b/player/loadfile.c index 8a8094c3e3..0ae59a0e65 100644 --- a/player/loadfile.c +++ b/player/loadfile.c @@ -1828,7 +1828,7 @@ void mp_set_playlist_entry(struct MPContext *mpctx, struct playlist_entry *e) mpctx->playlist->current_was_replaced = false; // Make it pick up the new entry. if (mpctx->stop_play != PT_QUIT) - mpctx->stop_play = PT_CURRENT_ENTRY; + mpctx->stop_play = e ? PT_CURRENT_ENTRY : PT_STOP; mp_wakeup_core(mpctx); } |