From 96a224c0df4f647b3e5dbbcbbedad3a1d38470ba Mon Sep 17 00:00:00 2001 From: ailurux Date: Thu, 29 Aug 2024 15:20:22 +1000 Subject: Lua API improvements and fixes Co-authored-by: jacqueline --- src/tangara/audio/track_queue.cpp | 15 +++++++++++++++ src/tangara/audio/track_queue.hpp | 1 + 2 files changed, 16 insertions(+) (limited to 'src/tangara/audio') diff --git a/src/tangara/audio/track_queue.cpp b/src/tangara/audio/track_queue.cpp index cc4770ae..2c1faf96 100644 --- a/src/tangara/audio/track_queue.cpp +++ b/src/tangara/audio/track_queue.cpp @@ -236,6 +236,21 @@ auto TrackQueue::next() -> void { next(Reason::kExplicitUpdate); } +auto TrackQueue::currentPosition(size_t position) -> bool { + { + const std::shared_lock lock(mutex_); + if (position >= totalSize()) { + return false; + } + goTo(position); + } + + // If we're explicitly setting the position, we want to treat it as though + // the current track has changed, even if the position was the same + notifyChanged(true, Reason::kExplicitUpdate); + return true; +} + auto TrackQueue::goTo(size_t position) -> void { position_ = position; if (opened_playlist_) { diff --git a/src/tangara/audio/track_queue.hpp b/src/tangara/audio/track_queue.hpp index 1d25568d..a8d1dc3a 100644 --- a/src/tangara/audio/track_queue.hpp +++ b/src/tangara/audio/track_queue.hpp @@ -73,6 +73,7 @@ class TrackQueue { auto current() const -> TrackItem; auto currentPosition() const -> size_t; + auto currentPosition(size_t position) -> bool; auto totalSize() const -> size_t; auto open() -> bool; auto openPlaylist(const std::string& playlist_file, bool notify = true) -- cgit v1.2.3