[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/listen 317732714c 083/103: Fix: (listen-queue-next-trac
From: |
ELPA Syncer |
Subject: |
[elpa] externals/listen 317732714c 083/103: Fix: (listen-queue-next-track) Also test filename |
Date: |
Mon, 26 Feb 2024 12:59:32 -0500 (EST) |
branch: externals/listen
commit 317732714c6e748f14acc013f53e3fc178e0778c
Author: Adam Porter <adam@alphapapa.net>
Commit: Adam Porter <adam@alphapapa.net>
Fix: (listen-queue-next-track) Also test filename
---
README.org | 1 +
listen-queue.el | 24 +++++++++++++++++++++---
listen.info | 6 ++++--
3 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/README.org b/README.org
index 52a109fe9b..b74900d3f5 100644
--- a/README.org
+++ b/README.org
@@ -57,6 +57,7 @@ Use the command ~listen~ to show the Transient menu. From
there, it is--hopeful
*Fixes*
+ The queue could sometimes skip tracks when playing.
++ Improve handling of tracks that are changed during playback (e.g. metadata).
** v0.1
diff --git a/listen-queue.el b/listen-queue.el
index 9875f30a99..020204d929 100644
--- a/listen-queue.el
+++ b/listen-queue.el
@@ -84,6 +84,11 @@
(list (list :name "▶" :primary 'descend
:getter (lambda (track _table)
(if (eq track (listen-queue-current queue))
+ ;; FIXME: If track metadata changes
during playback and the
+ ;; user refreshes the queue from disk,
the currently playing
+ ;; track won't match anymore. (The
obvious solution is to
+ ;; compare filenames, but that would seem
wasteful for a
+ ;; large queue, so let's defer that for
now.)
"▶" " ")))
(list :name "#" :primary 'descend
:getter (lambda (track _table)
@@ -338,9 +343,22 @@ PROMPT is passed to `format-prompt', which see."
(defun listen-queue-next-track (queue)
"Return QUEUE's next track after current."
- (seq-elt (listen-queue-tracks queue)
- (1+ (seq-position (listen-queue-tracks queue)
- (listen-queue-current queue)))))
+ (or (ignore-errors
+ (seq-elt (listen-queue-tracks queue)
+ (1+ (seq-position (listen-queue-tracks queue)
+ (listen-queue-current queue) #'eq))))
+ ;; Couldn't find position of current track: maybe the track
+ ;; object changed while it was playing (e.g. if the user changes
+ ;; the track metadata and refreshes the queue from disk while
+ ;; the track is playing), in which case it won't be able to find
+ ;; the track in the queue, so look again by comparing filenames.
+ (seq-elt (listen-queue-tracks queue)
+ (1+ (seq-position (listen-queue-tracks queue)
+ (listen-queue-current queue)
+ (lambda (a b)
+ (equal (listen-track-filename a)
+ (listen-track-filename b))))))))
+
(declare-function listen-shell-command "listen")
(defun listen-queue-shell-command (command filenames)
"Run COMMAND on FILENAMES.
diff --git a/listen.info b/listen.info
index b9ab917ba0..74b6207b84 100644
--- a/listen.info
+++ b/listen.info
@@ -120,6 +120,8 @@ File: README.info, Node: v02-pre, Next: v01, Up:
Changelog
*Fixes*
• The queue could sometimes skip tracks when playing.
+ • Improve handling of tracks that are changed during playback (e.g.
+ metadata).
File: README.info, Node: v01, Prev: v02-pre, Up: Changelog
@@ -151,8 +153,8 @@ Node: Configuration2537
Node: Usage2876
Node: Changelog3147
Node: v02-pre3299
-Node: v013681
-Node: Development3783
+Node: v013770
+Node: Development3872
End Tag Table
- [elpa] externals/listen 8d030200cd 052/103: Add README, (continued)
- [elpa] externals/listen 8d030200cd 052/103: Add README, ELPA Syncer, 2024/02/26
- [elpa] externals/listen f7fcff0c32 047/103: Fixes, ELPA Syncer, 2024/02/26
- [elpa] externals/listen 2b5d86b377 050/103: Commentary, etc., ELPA Syncer, 2024/02/26
- [elpa] externals/listen 06c78bdfe3 044/103: Fix, ELPA Syncer, 2024/02/26
- [elpa] externals/listen a6c67deeba 049/103: Tidy, ELPA Syncer, 2024/02/26
- [elpa] externals/listen 86e6677c6b 056/103: Fix, ELPA Syncer, 2024/02/26
- [elpa] externals/listen 4fac16dd51 057/103: Docs, ELPA Syncer, 2024/02/26
- [elpa] externals/listen 9ce822e09c 059/103: Add: basic library view, ELPA Syncer, 2024/02/26
- [elpa] externals/listen d4723c91f0 060/103: Library improvements, ELPA Syncer, 2024/02/26
- [elpa] externals/listen f97086d0fc 080/103: Change: (listen-queue) Headers for first 2 columns, ELPA Syncer, 2024/02/26
- [elpa] externals/listen 317732714c 083/103: Fix: (listen-queue-next-track) Also test filename,
ELPA Syncer <=
- [elpa] externals/listen 8bad3e92dc 087/103: Meta: v0.3-pre, ELPA Syncer, 2024/02/26
- [elpa] externals/listen a9e77ab677 101/103: Fix: (listen-queue-play) Add autoload, ELPA Syncer, 2024/02/26
- [elpa] externals/listen f9b0fe8b7d 102/103: Change: Use prin1 for filenames, ELPA Syncer, 2024/02/26
- [elpa] externals/listen d85ba4038e 097/103: Comment: Add TODO, ELPA Syncer, 2024/02/26
- [elpa] externals/listen 7d2498088b 017/103: Things, ELPA Syncer, 2024/02/26
- [elpa] externals/listen 33fe769381 018/103: And more, ELPA Syncer, 2024/02/26
- [elpa] externals/listen 74c5c75f41 019/103: More, ELPA Syncer, 2024/02/26
- [elpa] externals/listen 5ce4c38d1f 021/103: Tidy, ELPA Syncer, 2024/02/26
- [elpa] externals/listen c3aff3362f 035/103: Ensure track metadata, ELPA Syncer, 2024/02/26
- [elpa] externals/listen c0cc1c8a02 034/103: Add MPD source, other changes, ELPA Syncer, 2024/02/26