From 7b0b61877b2d812c8befaa689d326190895edabd Mon Sep 17 00:00:00 2001 From: Marius Vlad Date: Thu, 4 May 2023 14:42:56 +0300 Subject: [PATCH] compositor: Add support for subscribing to libweston scopes This brings in support to pass, over the command line, debug scopes that can help out debug issues with HW with other components or with libweston itself. One particular importance is the drm-backend debug scope. Bug-AGL: SPEC-4593 Signed-off-by: Marius Vlad Change-Id: I7a182ffe0b2b9bfdeced184514283265bb17c607 --- src/compositor.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/src/compositor.c b/src/compositor.c index 663fc4c..bb799cf 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -1741,6 +1741,36 @@ wet_load_xwayland(struct weston_compositor *comp) } #endif +static void +weston_log_setup_scopes(struct weston_log_context *log_ctx, + struct weston_log_subscriber *subscriber, + const char *names) +{ + assert(log_ctx); + assert(subscriber); + + char *tokenize = strdup(names); + char *token = strtok(tokenize, ","); + while (token) { + weston_log_subscribe(log_ctx, subscriber, token); + token = strtok(NULL, ","); + } + free(tokenize); +} + +static void +weston_log_subscribe_to_scopes(struct weston_log_context *log_ctx, + struct weston_log_subscriber *logger, + const char *debug_scopes) +{ + if (logger && debug_scopes) + weston_log_setup_scopes(log_ctx, logger, debug_scopes); + else + weston_log_subscribe(log_ctx, logger, "log"); +} + +>>>>>>> cea026b (compositor: Add support for subscribing to libweston scopes) + WL_EXPORT int wet_main(int argc, char *argv[], const struct weston_testsuite_data *test_data) { @@ -1756,6 +1786,7 @@ int wet_main(int argc, char *argv[], const struct weston_testsuite_data *test_da char *log = NULL; char *modules = NULL; char *option_modules = NULL; + char *debug_scopes = NULL; int help = 0; int version = 0; int no_config = 0; @@ -1777,6 +1808,7 @@ int wet_main(int argc, char *argv[], const struct weston_testsuite_data *test_da { WESTON_OPTION_BOOLEAN, "debug", 0, &debug }, { WESTON_OPTION_STRING, "config", 'c', &config_file }, { WESTON_OPTION_STRING, "modules", 0, &option_modules }, + { WESTON_OPTION_STRING, "debug-scopes", 'l', &debug_scopes }, }; wl_list_init(&ivi.outputs); @@ -1819,7 +1851,7 @@ int wet_main(int argc, char *argv[], const struct weston_testsuite_data *test_da weston_log_set_handler(vlog, vlog_continue); logger = weston_log_subscriber_create_log(logfile); - weston_log_subscribe(log_ctx, logger, "log"); + weston_log_subscribe_to_scopes(log_ctx, logger, debug_scopes); weston_log("Command line: %s\n", cmdline); free(cmdline); -- 2.16.6