aboutsummaryrefslogtreecommitdiff
path: root/src/button.c
diff options
context:
space:
mode:
authorFederico Angelilli <code@fedang.net>2024-03-14 15:44:41 +0100
committerFederico Angelilli <code@fedang.net>2024-03-14 15:44:41 +0100
commitc7a8b75933b3bd963e19f1a9d85f3b610a08e669 (patch)
tree91de053f1caaf655eaeb1bbd3458c49362b22e2a /src/button.c
parent93c4dc6893e733f563e70c315537922d55adfab2 (diff)
Change animation code and refactor state
Diffstat (limited to 'src/button.c')
-rw-r--r--src/button.c31
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);