summaryrefslogtreecommitdiff
path: root/src/tangara/audio/track_queue.cpp
diff options
context:
space:
mode:
authorailurux <ailuruxx@gmail.com>2024-08-29 15:20:22 +1000
committerailurux <ailuruxx@gmail.com>2024-08-29 15:20:22 +1000
commit96a224c0df4f647b3e5dbbcbbedad3a1d38470ba (patch)
tree8960865293dde6f9844b7b1a42d5775d5dceceb2 /src/tangara/audio/track_queue.cpp
parent3421bd652c39b253872e43d3b6e43664bd0b66e2 (diff)
downloadtangara-fw-96a224c0df4f647b3e5dbbcbbedad3a1d38470ba.tar.gz
Lua API improvements and fixes
Co-authored-by: jacqueline <me@jacqueline.id.au>
Diffstat (limited to 'src/tangara/audio/track_queue.cpp')
-rw-r--r--src/tangara/audio/track_queue.cpp15
1 files changed, 15 insertions, 0 deletions
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<std::shared_mutex> 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_) {