From 0bf573b3f08bd4463d708c73db5c6fb47fda71f4 Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Sun, 24 Jan 2021 02:18:05 +0100
Subject: [PATCH] EVENT: Reduce the number of things to read in the handle
 event function

---
 src/net/listen.c | 21 ++++++++++++---------
 1 file changed, 12 insertions(+), 9 deletions(-)

diff --git a/src/net/listen.c b/src/net/listen.c
index 6292aa2c..f73458c5 100644
--- a/src/net/listen.c
+++ b/src/net/listen.c
@@ -791,6 +791,8 @@ handle_queue_events(struct lkt_state *srv)
                   evt.attr, sizeof(size_t) * CHAR_BIT / 4, evt.attr);           \
         func;                                                                   \
         break;
+#define __ATTR_IS_STATE(state, func) {                                          \
+    if ((__LKT_PLAY_ ## state) == (size_t) evt.attr) { func; }}
 
     lkt_event evt;
     char *string = NULL;
@@ -806,19 +808,19 @@ redo:
         free(string);
     })
 
-    __CASE(play_next, { command_next(srv, NULL);     })
-    __CASE(play_prev, { command_previous(srv, NULL); })
+    __CASE(play_next, command_next(srv, NULL)     )
+    __CASE(play_prev, command_previous(srv, NULL) )
 
     __CASE(play_toggle, {
-        if (__LKT_PLAY_PAUSE  == (size_t) evt.attr) database_queue_set_paused(srv->db, 1);
-        if (__LKT_PLAY_PLAY   == (size_t) evt.attr) database_queue_set_paused(srv->db, 0);
-        if (__LKT_PLAY_TOGGLE == (size_t) evt.attr) database_queue_toggle_pause(srv->db);
-        if (__LKT_PLAY_STOP   == (size_t) evt.attr) database_queue_stop(srv->db);
+        __ATTR_IS_STATE(PAUSE,  database_queue_set_paused(srv->db, 1) )
+        __ATTR_IS_STATE(PLAY,   database_queue_set_paused(srv->db, 0) )
+        __ATTR_IS_STATE(TOGGLE, database_queue_toggle_pause(srv->db)  )
+        __ATTR_IS_STATE(STOP,   database_queue_stop(srv->db)          )
     })
 
-    __CASE(prop_vol,  { database_config_queue(srv->db, "volume", (size_t) evt.attr);   })
-    __CASE(prop_dur,  { database_config_queue(srv->db, "duration", (size_t) evt.attr); })
-    __CASE(prop_time, { database_config_queue(srv->db, "elapsed", (size_t) evt.attr);  })
+    __CASE(prop_vol,  database_config_queue(srv->db, "volume",   (size_t) evt.attr) )
+    __CASE(prop_dur,  database_config_queue(srv->db, "duration", (size_t) evt.attr) )
+    __CASE(prop_time, database_config_queue(srv->db, "elapsed",  (size_t) evt.attr) )
 
     __CASE(skip_current, {
         RETURN_UNLESS((string = malloc(PATH_MAX * sizeof(char))), "Out of memory", NOTHING);
@@ -833,6 +835,7 @@ redo:
     }
     goto redo;
 
+#undef __ATTR_IS_STATE
 #undef __CASE
 }
 
-- 
GitLab