summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@pengaru.com>2023-05-07 20:05:38 -0700
committerVito Caputo <vcaputo@pengaru.com>2023-05-11 15:18:02 -0700
commita409d9fd5d861d52dca0e4ed33416a49b00ae2d9 (patch)
tree64ca214e83102051c265c5cb1006de6b168308c4
parentf4e29c7923960d3cc6af73b3c66498cf9b2d6f38 (diff)
setup: constify settings passed to setup_func
setup_func isn't formally defined for libtil, but setup_interactively() defacto establishes it and til_module_t.setup() reflects the same signature and calling convention except with til_settings_t constified. This change makes them all consistent in this regard, but there should probably be a formal typedef added for the function. The reason for constifying this is I don't want setup functions directly manipulating the settings instance. In the case of rototiller::setup_interactively() we ensure the stdio-based interactive setup is always the side doing the manipulation of the settings. For a libtil-user like glimmer, it's slightly different beast with GTK+ in the loop, but by preventing the setup_funcs from messing directly with the settings (instead having to describe what they want done iteratively), the front-end always gets its opportunity to maintain its state while doing the described things. Of course, this is mostly a lie, and within libtil the constified til_settings_t gets cast away to modify it in places. But keeping that limited to within libtil is tolerable IMO. We just don't want to see such casts in module code.
-rw-r--r--src/main.c2
-rw-r--r--src/setup.c2
-rw-r--r--src/setup.h2
-rw-r--r--src/til.c2
-rw-r--r--src/til.h2
5 files changed, 5 insertions, 5 deletions
diff --git a/src/main.c b/src/main.c
index 2d28700..efc9d12 100644
--- a/src/main.c
+++ b/src/main.c
@@ -78,7 +78,7 @@ typedef struct setup_t {
*/
/* select video backend if not yet selected, then setup the selected backend. */
-static int setup_video(til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup)
+static int setup_video(const til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup)
{
til_setting_t *setting;
const char *video;
diff --git a/src/setup.c b/src/setup.c
index 7d413f9..f85ac10 100644
--- a/src/setup.c
+++ b/src/setup.c
@@ -23,7 +23,7 @@ static int add_value(til_settings_t *settings, const char *key, const char *valu
/* returns negative on error, otherwise number of additions made to settings */
-int setup_interactively(til_settings_t *settings, int (*setup_func)(til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup), int defaults, til_setup_t **res_setup, const til_setting_desc_t **res_failed_desc)
+int setup_interactively(til_settings_t *settings, int (*setup_func)(const til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup), int defaults, til_setup_t **res_setup, const til_setting_desc_t **res_failed_desc)
{
unsigned additions = 0;
char buf[256] = "\n";
diff --git a/src/setup.h b/src/setup.h
index 948b820..0862e45 100644
--- a/src/setup.h
+++ b/src/setup.h
@@ -4,6 +4,6 @@
#include "til_settings.h"
#include "til_setup.h"
-int setup_interactively(til_settings_t *settings, int (*setup_func)(til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup), int defaults, til_setup_t **res_setup, const til_setting_desc_t **res_failed_desc);
+int setup_interactively(til_settings_t *settings, int (*setup_func)(const til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup), int defaults, til_setup_t **res_setup, const til_setting_desc_t **res_failed_desc);
#endif
diff --git a/src/til.c b/src/til.c
index 58e52bb..9053c2d 100644
--- a/src/til.c
+++ b/src/til.c
@@ -264,7 +264,7 @@ int til_module_create_context(const til_module_t *module, til_stream_t *stream,
/* select module if not yet selected, then setup the module. */
-int til_module_setup(til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup)
+int til_module_setup(const til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup)
{
til_setting_t *setting;
const til_module_t *module;
diff --git a/src/til.h b/src/til.h
index 49823ba..fabee0a 100644
--- a/src/til.h
+++ b/src/til.h
@@ -45,7 +45,7 @@ void til_get_modules(const til_module_t ***res_modules, size_t *res_n_modules);
void til_module_render(til_module_context_t *context, til_stream_t *stream, unsigned ticks, til_fb_fragment_t **fragment_ptr);
int til_module_create_context(const til_module_t *module, til_stream_t *stream, unsigned seed, unsigned ticks, unsigned n_cpus, const char *parent_path, til_setup_t *setup, til_module_context_t **res_context);
til_module_context_t * til_module_destroy_context(til_module_context_t *context, til_stream_t *stream);
-int til_module_setup(til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup);
+int til_module_setup(const til_settings_t *settings, til_setting_t **res_setting, const til_setting_desc_t **res_desc, til_setup_t **res_setup);
int til_module_randomize_setup(const til_module_t *module, unsigned seed, til_setup_t **res_setup, char **res_arg);
int til_fragmenter_slice_per_cpu(til_module_context_t *context, const til_fb_fragment_t *fragment, unsigned number, til_fb_fragment_t *res_fragment);
int til_fragmenter_tile64(til_module_context_t *context, const til_fb_fragment_t *fragment, unsigned number, til_fb_fragment_t *res_fragment);
© All Rights Reserved