summaryrefslogtreecommitdiff
path: root/src/stage.h
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@pengaru.com>2019-06-12 13:30:19 -0700
committerVito Caputo <vcaputo@pengaru.com>2019-06-12 13:30:19 -0700
commit8ccec1152ef3080c54e76959413d2b16f231cc38 (patch)
tree40e0091e36e16c4e6a54174c04afc32de40c7bec /src/stage.h
parentefda9aa3f0cee82cc3e2968326cf0df804d7e6d6 (diff)
libstage: introduce prepare_func and prepare pass
This effectively makes rendering two passes, with a first pass giving stage nodes an opportunity to maintain caches or other preparatory steps before actual rendering.
Diffstat (limited to 'src/stage.h')
-rw-r--r--src/stage.h5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/stage.h b/src/stage.h
index a2a2543..2b5cc91 100644
--- a/src/stage.h
+++ b/src/stage.h
@@ -22,12 +22,13 @@
typedef struct stage_t stage_t;
+typedef void (stage_prepare_func_t)(stage_t *stage, void *object, float alpha, void *render_ctxt);
typedef void (stage_render_func_t)(const stage_t *stage, void *object, float alpha, void *render_ctxt);
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_render_func_t *render_func, stage_free_func_t *free_func, stage_lookup_func_t *lookup_func);
-void stage_replace(stage_t *stage, const char *name, void *object, stage_render_func_t *render_func, stage_free_func_t *free_func, stage_lookup_func_t *lookup_func);
+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);
+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);
void stage_dirty(stage_t *stage);
© All Rights Reserved