From 737167955e8347ce06718e7a8324c9d2ac89dfba Mon Sep 17 00:00:00 2001 From: Federico Angelilli Date: Thu, 28 Nov 2024 01:09:40 +0100 Subject: Refactor actions --- src/block.c | 27 +++++++++++++++++++-------- 1 file changed, 19 insertions(+), 8 deletions(-) (limited to 'src/block.c') diff --git a/src/block.c b/src/block.c index 04ad902..c397b5a 100644 --- a/src/block.c +++ b/src/block.c @@ -51,6 +51,22 @@ void block_update(block_t *block) } } +bool block_resolve_action(block_t *block, config_t *config, action_t **action) +{ + if (action == NULL || *action == NULL) + return true; + + char *label = (char *)*action; + + bool result = config_resolve_action(config, label, action); + if (!result) { + log_error("Action '%s' not found (referenced by block '%s')", label, block->label); + } + + free(label); + return result; +} + bool block_resolve(block_t *block, config_t *config) { if (block->resolved) @@ -59,13 +75,8 @@ bool block_resolve(block_t *block, config_t *config) block->resolved = true; for (size_t i = 0; i < EVENT_MAX; i++) { - char *action = (char *)block->actions[i]; - if (action == NULL) continue; - - if (!config_resolve_action(config, action, &block->actions[i])) + if (!block_resolve_action(block, config, &block->actions[i])) return false; - - free(action); } return block->scheme->resolve_fn == NULL @@ -92,8 +103,8 @@ void block_free(block_t *block) if (block->scheme->clean_fn != NULL) block->scheme->clean_fn(block); - gradient_free(&block->bg_color); - gradient_free(&block->line_color); + gradient_clean(&block->bg_color); + gradient_clean(&block->line_color); free(block->label); free(block); -- cgit v1.2.3