From 83a324a7d4a2c3e0a75148c918171b14f77dd371 Mon Sep 17 00:00:00 2001 From: Vito Caputo Date: Wed, 12 Jun 2019 14:43:52 -0700 Subject: libstage: introduce stage_conf_t for stage_new() stage_new() call sites were getting quite annoying, using compound literals with designated initializers on a struct makes the call sites a lot more readable, self-documenting, and often more compact thanks to the automatic zeroing of omitted members. I don't particularly like the name, and may switch it later, something shorter would be nice. --- src/stage.h | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'src/stage.h') diff --git a/src/stage.h b/src/stage.h index 2b5cc91..86d2311 100644 --- a/src/stage.h +++ b/src/stage.h @@ -27,7 +27,21 @@ typedef void (stage_render_func_t)(const stage_t *stage, void *object, float alp typedef void (stage_free_func_t)(const stage_t *stage, void *object); typedef stage_t * (stage_lookup_func_t)(const stage_t *stage, void *object, void *key); -stage_t * stage_new(stage_t *parent, int layer, const char *name, void *object, stage_prepare_func_t *prepare_func, stage_render_func_t *render_func, stage_free_func_t *free_func, stage_lookup_func_t *lookup_func); +typedef struct stage_conf_t { + stage_t *parent; + int layer; + const char *name; + void *object; + stage_prepare_func_t *prepare_func; + stage_render_func_t *render_func; + stage_free_func_t *free_func; + stage_lookup_func_t *lookup_func; + float alpha; + unsigned active:1; + unsigned locked:1; +} stage_conf_t; + +stage_t * stage_new(const stage_conf_t *conf); void stage_replace(stage_t *stage, const char *name, void *object, stage_prepare_func_t *prepare_func, stage_render_func_t *render_func, stage_free_func_t *free_func, stage_lookup_func_t *lookup_func); stage_t * stage_free(stage_t *stage); int stage_render(stage_t *stage, void *render_ctxt); -- cgit v1.2.3