From ebd41bdf6c04bdad5a6e4a737bbd2d338f2c8887 Mon Sep 17 00:00:00 2001 From: wm4 Date: Mon, 17 Nov 2014 22:07:50 +0100 Subject: [PATCH] command: playlist property: return if an entry is currently playing This actually doesn't even write/return the new sub-property, because I dislike the idea of dumping that field for every single playlist entry, even though it's "needed" only for one. Fixes #1260. --- DOCS/man/input.rst | 8 ++++++++ player/command.c | 2 ++ 2 files changed, 10 insertions(+) diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst index 65e734187a..df045a4e26 100644 --- a/DOCS/man/input.rst +++ b/DOCS/man/input.rst @@ -1214,6 +1214,13 @@ Property list ``playlist/N/filename`` Filename of the Nth entry. + ``playlist/N/playing`` + ``yes`` if this entry is currently playing (or being loaded). + Unavailable or ``no`` otherwise. Can be set incorrectly when changing + files, because it's not set to ``yes`` for the brief time when the + previous file was unloaded, and loading the new entry has not started + yet. (Since mpv 0.7.0.) + When querying the property with the client API using ``MPV_FORMAT_NODE``, or with Lua ``mp.get_property_native``, this will return a mpv_node with the following contents: @@ -1223,6 +1230,7 @@ Property list MPV_FORMAT_NODE_ARRAY MPV_FORMAT_NODE_MAP (for each playlist entry) "filename" MPV_FORMAT_STRING + "playing" MPV_FORMAT_FLAG (might be missing; since mpv 0.7.0) ``track-list`` List of audio/video/sub tracks, current entry marked. Currently, the raw diff --git a/player/command.c b/player/command.c index 522dd8ec5a..a0b459d6fa 100644 --- a/player/command.c +++ b/player/command.c @@ -2849,8 +2849,10 @@ static int get_playlist_entry(int item, int action, void *arg, void *ctx) if (!e) return M_PROPERTY_ERROR; + bool playing = e == mpctx->playing; struct m_sub_property props[] = { {"filename", SUB_PROP_STR(e->filename)}, + {"playing", SUB_PROP_FLAG(1), .unavailable = !playing}, {0} };