From 7760f3a50295d377b2b9fc89740765d94dc118dc Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Mon, 10 Nov 2014 00:17:18 +0100 Subject: [PATCH] More MPD controls --- ursaryd.c | 59 ++++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 12 deletions(-) diff --git a/ursaryd.c b/ursaryd.c index 3b1d051..16e4066 100644 --- a/ursaryd.c +++ b/ursaryd.c @@ -337,13 +337,40 @@ static void update_default_sink_from_button(int button, int on) /*** MPD controls ***/ +static bool mpd_flash_state; + +static void mpd_flash_timeout(struct main_timer *t) +{ + mpd_flash_state ^= 1; + noct_set_button(12, mpd_flash_state); + timer_add_rel(t, 500); +} + +static struct main_timer mpd_flash_timer = { + .handler = mpd_flash_timeout, +}; + static void update_mpd(void) { const char *state = mpd_get_player_state(); if (!strcmp(state, "play")) - noct_set_button(12, 1); + { + noct_set_button(12, 1); + timer_del(&mpd_flash_timer); + } + else if (!strcmp(state, "pause")) + { + if (!timer_is_active(&mpd_flash_timer)) + { + mpd_flash_state = 1; + mpd_flash_timeout(&mpd_flash_timer); + } + } else - noct_set_button(12, 0); + { + noct_set_button(12, 0); + timer_del(&mpd_flash_timer); + } } static void mpd_button_timeout(struct main_timer *t) @@ -359,28 +386,36 @@ static void update_mpd_from_button(int button UNUSED, int on) .handler = mpd_button_timeout, }; + const char *state = mpd_get_player_state(); + if (!on) { - timer_del(&mpd_button_timer); + if (timer_is_active(&mpd_button_timer)) + { + timer_del(&mpd_button_timer); + if (!strcmp(state, "play")) + { + DBG("MPD pause"); + mpd_pause(1); + } + else if (!strcmp(state, "pause")) + { + DBG("MPD resume"); + mpd_pause(0); + } + } return; } - const char *state = mpd_get_player_state(); if (!strcmp(state, "stop")) { DBG("MPD play"); mpd_play(); } - else if (!strcmp(state, "play")) + else { - DBG("MPD pause"); + DBG("MPD starting button timer"); timer_add_rel(&mpd_button_timer, 1000); - mpd_pause(1); - } - else if (!strcmp(state, "pause")) - { - DBG("MPD resume"); - mpd_pause(0); } } -- 2.39.2