From: "Bryce Harrington" <[email protected]> This provides a way to run weston with a modified configuration, such as for testing purposes.
Signed-off-by: Bryce Harrington (http://osg.samsung.com) <[email protected]> Signed-off-by: Bryce Harrington <[email protected]> --- man/weston.man | 9 +++++++++ src/compositor.c | 24 +++++++++++++++++++++++- 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/man/weston.man b/man/weston.man index 735235f..5062edb 100644 --- a/man/weston.man +++ b/man/weston.man @@ -136,6 +136,15 @@ Do not read for the compositor. Avoids e.g. loading compositor modules via the configuration file, which is useful for unit tests. .TP +.BR \-\-config\-overrides +A comma-separated list of configuration parameters that will be set +and take precidence over the loaded +.I weston.ini +file (if any). No changes are written to the +.I weston.ini +on disk. Parameters are formatted as 'section.key=value'; all three of +section, key, and value must be specified. +.TP \fB\-\^S\fR\fIname\fR, \fB\-\-socket\fR=\fIname\fR Weston will listen in the Wayland socket called .IR name . diff --git a/src/compositor.c b/src/compositor.c index b84658a..b2403bc 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -4571,6 +4571,7 @@ usage(int error_code) " --modules\t\tLoad the comma-separated list of modules\n" " --log=FILE\t\tLog to the given file\n" " --no-config\t\tDo not read weston.ini\n" + " --config-override\tComma-separated list of sect.key=val config params\n" " -h, --help\t\tThis help message\n\n"); #if defined(BUILD_DRM_COMPOSITOR) @@ -4774,6 +4775,7 @@ int main(int argc, char *argv[]) char *socket_name = NULL; int32_t version = 0; int32_t noconfig = 0; + char *config_overrides = NULL; int32_t numlock_on; struct weston_config *config = NULL; struct weston_config_section *section; @@ -4791,6 +4793,7 @@ int main(int argc, char *argv[]) { WESTON_OPTION_BOOLEAN, "help", 'h', &help }, { WESTON_OPTION_BOOLEAN, "version", 0, &version }, { WESTON_OPTION_BOOLEAN, "no-config", 0, &noconfig }, + { WESTON_OPTION_STRING, "config-overrides", 0, &config_overrides }, }; parse_options(core_options, ARRAY_LENGTH(core_options), &argc, argv); @@ -4834,6 +4837,7 @@ int main(int argc, char *argv[]) goto out_signals; } + /* Load configuration */ if (noconfig == 0) config = weston_config_parse("weston.ini"); if (config != NULL) { @@ -4842,8 +4846,26 @@ int main(int argc, char *argv[]) } else { weston_log("Starting with no config file.\n"); } - section = weston_config_get_section(config, "core", NULL, NULL); + /* Modify config based on command line options */ + if (config_overrides) { + if (config == NULL) + config = weston_config_create(); + if (config == NULL) { + ret = EXIT_FAILURE; + goto out_signals; + } + + if (!weston_config_update(config, config_overrides)) { + weston_log("Could not update config with overrides '%s'.\n", + config_overrides); + ret = EXIT_FAILURE; + goto out_signals; + } + } + + /* Set backend */ + section = weston_config_get_section(config, "core", NULL, NULL); if (!backend) { weston_config_section_get_string(section, "backend", &backend, NULL); -- 1.9.1 _______________________________________________ wayland-devel mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/wayland-devel
