diff --git a/src/base/commands.c b/src/base/commands.c index 4d742a503b917c7e572f82d34a1ca1a10e5f8146..c029d911daa0b2b136fc265592e57251f493f498 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; }