/** @brief Track failed to play */
playing_failed,
- /** @brief Track is a scratch and has not been played yet
+ /** @brief OBSOLETE
*
- * Going to become obsolete.
+ * Formerly denoted an unplayed scratch. This is now indicated by @p
+ * playing_unplayed and @p origin_scratch.
*/
playing_isscratch,
- /** @brief Could not find a player
+ /** @brief OBSOLETE
*
- * Obsolete - nothing sets this any more
+ * Formerly meant that no player could be found. Nothing sets this any more.
*/
playing_no_player,
/** @brief Track is playing but the server is quitting */
playing_quitting,
- /** @brief Track was randomly chosen and has not been played
+ /** @brief OBSOLETE
*
- * This is going to become obsolete eventually; it's equivalent to @ref
- * playing_unplayed but for tracks with a different origin.
+ * Formerly this meant a track that was picked at random and has not yet been
+ * played. This situation is now indicated by @p playing_unplayed and @p
+ * origin_random (or @p origin_adopted).
*/
playing_random,
enum track_origin {
/** @brief Track was picked at random and then adopted by a user
*
- * @c submitter identifies who adopted it. This isn't implemented
- * yet.
+ * @c submitter identifies who adopted it.
*/
origin_adopted,
/** @brief How much of track has been played so far (seconds) */
long sofar;
- /** @brief True if decoder is connected to speaker */
+ /** @brief True if decoder is connected to speaker
+ *
+ * This is not a @ref playing_state for a couple of reasons
+ * - it is orthogonal to @ref playing_started and @ref playing_unplayed
+ * - it would have to be hidden to other users of @c queue_entry
+ *
+ * For non-raw tracks this should always be zero.
+ */
int prepared;
/* For DISORDER_PLAYER_PAUSES only: */
/** @brief Owning queue (for Disobedience only) */
struct queuelike *ql;
+
+ /** @brief Decoder (or player) process ID */
+ pid_t pid;
};
void queue_insert_entry(struct queue_entry *b, struct queue_entry *n);