From 042047a3551dd0afdccbb819a5ee0c7a34f9cbad Mon Sep 17 00:00:00 2001 From: Hans Dijkema Date: Tue, 28 Apr 2026 22:20:36 +0200 Subject: [PATCH] enhancements for the rktplayer --- gui.rkt | 6 ++++-- music-library.rkt | 4 +++- player.rkt | 22 ++++++++++++---------- playlist.rkt | 1 + 4 files changed, 20 insertions(+), 13 deletions(-) diff --git a/gui.rkt b/gui.rkt index eff0602..e287579 100644 --- a/gui.rkt +++ b/gui.rkt @@ -116,7 +116,8 @@ (define current-track-nr #f) (define (update-track-nr nr) - (unless (eq? playlist #f) + (unless (or (eq? playlist #f) + (= (send playlist length) 0)) (dbg-rktplayer "update-track-nr ~a" nr) (let ((id (λ () (send playlist track-id current-track-nr))) ;string->symbol (format "track-~a" (+ current-track-nr 1))))) (ct current-track-nr)) @@ -537,7 +538,8 @@ (update-track-nr #f)) (define/public (play-track idx) - (send player play-track idx)) + (unless (= (send playlist length) 0) + (send player play-track idx))) (define/public (pause) (send player pause-unpause)) diff --git a/music-library.rkt b/music-library.rkt index a74e9ab..c78d3e5 100644 --- a/music-library.rkt +++ b/music-library.rkt @@ -1,5 +1,7 @@ #lang racket +(require racket-sound) + (provide music-lib-relevant? is-music-dir? is-music-file? @@ -14,7 +16,7 @@ (not (string-prefix? name "."))) (if (eq? type 'file) (let* ((fn (string-downcase (format "~a" f))) - (exts (list "flac" "mp3"))) + (exts (audio-supported-extensions))) (let ((l (filter (λ (e) (string-suffix? fn (string-append "." e))) exts))) (not (null? l)))) #f)))) diff --git a/player.rkt b/player.rkt index 0c93dc9..06e2c25 100644 --- a/player.rkt +++ b/player.rkt @@ -266,16 +266,18 @@ ) (define/public (play-track i) - (dbg-rktplayer "play-track ~a" i) - (set! state 'stopped) - (close-player*) - (dbg-rktplayer "Player closed") - (set! track i) - (set! ct-data (send pl track i)) - (set-state! 'play) - (dbg-rktplayer "Set state to 'play, updating to track ~a" track) - (track-nr-updater track) - (dbg-rktplayer "track-nr-updater called") + (unless (= (send pl length) 0) + (dbg-rktplayer "play-track ~a" i) + (set! state 'stopped) + (close-player*) + (dbg-rktplayer "Player closed") + (set! track i) + (set! ct-data (send pl track i)) + (set-state! 'play) + (dbg-rktplayer "Set state to 'play, updating to track ~a" track) + (track-nr-updater track) + (dbg-rktplayer "track-nr-updater called") + ) ) (define/public (stop) diff --git a/playlist.rkt b/playlist.rkt index ba9f6cb..d27c545 100644 --- a/playlist.rkt +++ b/playlist.rkt @@ -377,6 +377,7 @@ (if (< i N) (cons (list (send this track-id i) i) (f (+ i 1) N)) '())))) + (dbg-rktplayer "Number of rows in playlist: ~a" (send this length)) (let ((rows (f 0 (send this length)))) (mktable rows 'tracks formatter))))