diff options
author | Vito Caputo <vcaputo@pengaru.com> | 2022-03-30 16:20:44 -0700 |
---|---|---|
committer | Vito Caputo <vcaputo@pengaru.com> | 2022-03-30 16:20:44 -0700 |
commit | 78c275b094b63e01a5f7bc71af80fe787911bbf4 (patch) | |
tree | d695440a22c2ff4308c4b196ac6d4ea042b3cdc6 /src/modules/compose | |
parent | ad31d39a7edad0fc4c59a4fb254cbb214a4ed1b1 (diff) |
*: wire up context-specific setup instances
This is a preparatory commit for cleaning up the existing sloppy
global-ish application of settings during the iterative _setup()
call sequences.
Due to how this has evolved from a very rudimentary thing
enjoying many assumptions about there ever only being a single
module instance being configured by the settings, there's a lot
of weirdness and inconsistency surrounding module setup WRT
changes being applied instantaneously to /all/ existing and
future context's renderings of a given module vs. requiring a new
context be created to realize changes.
This commit doesn't actually change any of that, but puts the
plumbing in place for the setup methods to allocate and
initialize a private struct encapsulating the parsed and
validated setup once the settings are complete. This opaque
setup pointer will then be provided to the associated
create_context() method as the setup pointer. Then the created
context can configure itself using the provided setup when
non-NULL, or simply use defaults when NULL.
A future commit will update the setup methods to allocate and
populate their respective setup structs, adding the structs as
needed, as well as updating their create_context() methods to
utilize those setups.
One consequence of these changes when fully realized will be that
every setting change will require a new context be created from
the changed settings for the change to be realized.
For settings appropriately manipulated at runtime the concept of
knobs was introduced but never finished. That will have to be
finished in the future to enable more immediate/interactive
changing of settings-like values appropriate for interactive
manipulation
Diffstat (limited to 'src/modules/compose')
-rw-r--r-- | src/modules/compose/compose.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/modules/compose/compose.c b/src/modules/compose/compose.c index b3e2dbc..adf638c 100644 --- a/src/modules/compose/compose.c +++ b/src/modules/compose/compose.c @@ -36,10 +36,10 @@ typedef struct compose_context_t { compose_layer_t layers[]; } compose_context_t; -static void * compose_create_context(unsigned ticks, unsigned num_cpus); +static void * compose_create_context(unsigned ticks, unsigned num_cpus, void *setup); static void compose_destroy_context(void *context); static void compose_prepare_frame(void *context, unsigned ticks, unsigned n_cpus, til_fb_fragment_t *fragment, til_fragmenter_t *res_fragmenter); -static int compose_setup(const til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc); +static int compose_setup(const til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, void **res_setup); static char *compose_default_layers[] = { "drizzle", "stars", "spiro", "plato", NULL }; static char **compose_layers; @@ -55,7 +55,7 @@ til_module_t compose_module = { }; -static void * compose_create_context(unsigned ticks, unsigned num_cpus) +static void * compose_create_context(unsigned ticks, unsigned num_cpus, void *setup) { char **layers = compose_default_layers; compose_context_t *ctxt; @@ -78,7 +78,7 @@ static void * compose_create_context(unsigned ticks, unsigned num_cpus) module = til_lookup_module(layers[i]); ctxt->layers[i].module = module; - (void) til_module_create_context(module, ticks, &ctxt->layers[i].module_ctxt); + (void) til_module_create_context(module, ticks, NULL, &ctxt->layers[i].module_ctxt); ctxt->n_layers++; } @@ -108,7 +108,7 @@ static void compose_prepare_frame(void *context, unsigned ticks, unsigned n_cpus } -static int compose_setup(const til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc) +static int compose_setup(const til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, void **res_setup) { const char *layers; int r; |