From a3b148812e2a0776806eb952683acf9ebd49322c Mon Sep 17 00:00:00 2001
From: Kubat <mael.martin31@gmail.com>
Date: Thu, 3 Sep 2020 16:29:29 +0200
Subject: [PATCH] PLAYBACK: Fix pause/play state with the sdl2 module

---
 src/module/module_sdl2.c | 6 ++----
 src/module/mpv.c         | 4 ++--
 src/net/listen.c         | 5 ++++-
 3 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/src/module/module_sdl2.c b/src/module/module_sdl2.c
index 4de7b6df..490a0fed 100644
--- a/src/module/module_sdl2.c
+++ b/src/module/module_sdl2.c
@@ -338,10 +338,8 @@ loop:
         state = SDL_GetKeyboardState(NULL);
         ctrl = state[SDL_SCANCODE_LCTRL] || state[SDL_SCANCODE_RCTRL];
 
-        if (ctrl && event.key.keysym.sym == SDLK_SPACE) {
-            const char *cmd_pause[] = { "cycle", "pause", NULL };
-            mpv_command_async((mpv_handle *) sdl2->mpv, 0, cmd_pause);
-        }
+        if (ctrl && event.key.keysym.sym == SDLK_SPACE)
+            lkt_queue_send(sdl2->queue, lkt_event_play_toggle, LKT_PLAY_TOGGLE);
 
         else if (event.key.keysym.sym == SDLK_n && ctrl)
             lkt_queue_send(sdl2->queue, lkt_event_play_next, NULL);
diff --git a/src/module/mpv.c b/src/module/mpv.c
index b714f5cf..4d92ecc0 100644
--- a/src/module/mpv.c
+++ b/src/module/mpv.c
@@ -166,12 +166,12 @@ loop:
     switch (event->event_id) {
     case MPV_EVENT_PAUSE:
         *state = STATE_PAUSE;
-        lkt_queue_send(queue, lkt_event_play_toggle, LKT_PLAY_TOGGLE);
+        lkt_queue_send(queue, lkt_event_play_toggle, LKT_PLAY_PAUSE);
         break;
 
     case MPV_EVENT_UNPAUSE:
         *state = STATE_PLAY;
-        lkt_queue_send(queue, lkt_event_play_toggle, LKT_PLAY_TOGGLE);
+        lkt_queue_send(queue, lkt_event_play_toggle, LKT_PLAY_PLAY);
         break;
 
     case MPV_EVENT_SHUTDOWN:
diff --git a/src/net/listen.c b/src/net/listen.c
index 380cebe9..a1f1653d 100644
--- a/src/net/listen.c
+++ b/src/net/listen.c
@@ -744,9 +744,12 @@ redo:
 
     case lkt_event_play_toggle:
         switch ((size_t) evt.attr) {
-        /* FIXME: Don't toggle with the PLAY/PAUSE commands */
         case __LKT_PLAY_PAUSE:
+            database_queue_set_paused(srv->db, 1); /* Set to pause */
+            break;
         case __LKT_PLAY_PLAY:
+            database_queue_set_paused(srv->db, 0); /* Set to play */
+            break;
         case __LKT_PLAY_TOGGLE:
             database_queue_toggle_pause(srv->db);
             break;
-- 
GitLab