diff options
| author | Federico Angelilli <code@fedang.net> | 2024-03-14 15:44:41 +0100 |
|---|---|---|
| committer | Federico Angelilli <code@fedang.net> | 2024-03-14 15:44:41 +0100 |
| commit | c7a8b75933b3bd963e19f1a9d85f3b610a08e669 (patch) | |
| tree | 91de053f1caaf655eaeb1bbd3458c49362b22e2a /src/button.c | |
| parent | 93c4dc6893e733f563e70c315537922d55adfab2 (diff) | |
Change animation code and refactor state
Diffstat (limited to 'src/button.c')
| -rw-r--r-- | src/button.c | 31 |
1 files changed, 3 insertions, 28 deletions
diff --git a/src/button.c b/src/button.c index b313f8a..9a7df67 100644 --- a/src/button.c +++ b/src/button.c @@ -66,38 +66,13 @@ void button_set_padding(Button *btn, int padding) bool button_set_animation(Button *btn, Animation *anim) { - if (btn->anim) return false; + if (btn->anim != NULL) + return false; + btn->anim = anim; return true; } -// Wrapper for animation sources -static gboolean anim_handler(gpointer data) -{ - Button *btn = data; - if (btn->anim->handler(btn->anim)) - return G_SOURCE_CONTINUE; - - g_free(btn->anim); - btn->anim = NULL; - return G_SOURCE_REMOVE; -} - -void button_start_animation(Button *btn) -{ - // Maybe error out - if (btn->anim == NULL) { - log_warning("Button animation was not set"); - return; - } - - const int fps = 60; - if (btn->anim->handler(btn->anim)) - g_timeout_add(1000 / 60, anim_handler, btn); - - log_debug("Started animation [type=%d, button=%p]", btn->anim->type, btn); -} - void button_destroy(Button *btn) { if (btn->simple) g_free(CAST(btn, ButtonSimple)->text); |
