summaryrefslogtreecommitdiff
path: root/src/tangara/lua/lua_queue.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/tangara/lua/lua_queue.cpp')
-rw-r--r--src/tangara/lua/lua_queue.cpp18
1 files changed, 14 insertions, 4 deletions
diff --git a/src/tangara/lua/lua_queue.cpp b/src/tangara/lua/lua_queue.cpp
index 9e2002e6..7eb32c62 100644
--- a/src/tangara/lua/lua_queue.cpp
+++ b/src/tangara/lua/lua_queue.cpp
@@ -4,6 +4,7 @@
* SPDX-License-Identifier: GPL-3.0-only
*/
+#include "audio/audio_events.hpp"
#include "lua/lua_database.hpp"
#include <memory>
@@ -39,6 +40,14 @@ static auto queue_add(lua_State* state) -> int {
audio::TrackQueue& queue = instance->services().track_queue();
queue.append(id);
});
+ } else if (lua_isstring(state, 1)) {
+ size_t len;
+ const char* str = luaL_checklstring(state, 1, &len);
+ std::string path{str, len};
+ instance->services().bg_worker().Dispatch<void>([=]() {
+ audio::TrackQueue& queue = instance->services().track_queue();
+ queue.append(path);
+ });
} else {
database::Iterator* it = db_check_iterator(state, 1);
instance->services().bg_worker().Dispatch<void>([=]() {
@@ -70,10 +79,11 @@ static auto queue_open_playlist(lua_State* state) -> int {
return 0;
}
-static const struct luaL_Reg kQueueFuncs[] = {{"add", queue_add},
- {"clear", queue_clear},
- {"open_playlist", queue_open_playlist},
- {NULL, NULL}};
+static const struct luaL_Reg kQueueFuncs[] = {
+ {"add", queue_add},
+ {"clear", queue_clear},
+ {"open_playlist", queue_open_playlist},
+ {NULL, NULL}};
static auto lua_queue(lua_State* state) -> int {
luaL_newlib(state, kQueueFuncs);