From 003717f557892709f51902a59385ec3f316fa0c3 Mon Sep 17 00:00:00 2001 From: Kubat <mael.martin31@gmail.com> Date: Mon, 14 Sep 2020 11:02:47 +0200 Subject: [PATCH] Execute hooks when needed in commands MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The queue_end is not used for the moment. Les hooks sont exécutés que si la commande a réussie. --- src/base/commands.c | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/base/commands.c b/src/base/commands.c index 4d742a50..c029d911 100644 --- a/src/base/commands.c +++ b/src/base/commands.c @@ -161,7 +161,12 @@ command_next(struct lkt_state *srv, char __attribute__((unused)) *args[LKT_MESSA char filepath[PATH_MAX]; if (!database_queue_next(srv->db, filepath)) return false; - return ! MOD_CALL(srv->window_mod, "load", filepath); + if (MOD_CALL(srv->window_mod, "load", filepath)) + return false; + else { + config_handle_hook(srv->db, "kara_load", 0); + return true; + } } bool @@ -180,7 +185,12 @@ command_previous(struct lkt_state *srv, char __attribute__((unused)) *args[LKT_M char filepath[PATH_MAX]; if (!database_queue_prev(srv->db, filepath)) return false; - return ! MOD_CALL(srv->window_mod, "load", filepath); + if (MOD_CALL(srv->window_mod, "load", filepath)) + return false; + else { + config_handle_hook(srv->db, "kara_load", 0); + return true; + } } static inline bool @@ -210,7 +220,14 @@ command_play(struct lkt_state *srv, char __attribute__((unused)) *args[LKT_MESSA database_queue_stop(srv->db); RETURN_IF(MOD_CALL(srv->window_mod, "new", &srv->queue, srv->db), "Can't create window", false); srv->mpd_idle_events |= MPD_IDLE_PLAYER; - return __play_that_file(srv, pos); + + /* Hooks */ + if (__play_that_file(srv, pos)) { + config_handle_hook(srv->db, "queue_begin", 0); + config_handle_hook(srv->db, "kara_load", 0); + return true; + } else + return false; } bool @@ -238,7 +255,14 @@ command_playid(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]) srv->mpd_idle_events |= MPD_IDLE_PLAYER; RETURN_IF(MOD_CALL(srv->window_mod, "new", &srv->queue, srv->db), "Can't create window", false); database_queue_seekid(srv->db, (int) id, &pos); - return __play_that_file(srv, pos); + + /* Hooks */ + if (__play_that_file(srv, pos)) { + config_handle_hook(srv->db, "queue_begin", 0); + config_handle_hook(srv->db, "kara_load", 0); + return true; + } else + return false; } -- GitLab