diff options
| author | Federico Angelilli <code@fedang.net> | 2024-11-28 01:09:40 +0100 |
|---|---|---|
| committer | Federico Angelilli <code@fedang.net> | 2024-11-28 01:09:40 +0100 |
| commit | 737167955e8347ce06718e7a8324c9d2ac89dfba (patch) | |
| tree | d187ac026739c01eb5df22a3954b95eb7bc63a7b /src/block.c | |
| parent | 6ab3b52fbde3ab2ac11e66e4d664f67e108f6aee (diff) | |
Refactor actions
Diffstat (limited to 'src/block.c')
| -rw-r--r-- | src/block.c | 27 |
1 files changed, 19 insertions, 8 deletions
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); |
