#include <libweston/windowed-output-api.h>
#include <libweston/config-parser.h>
#include <libweston/weston-log.h>
-#include <weston/weston.h>
+#include <weston.h>
#include "shared/os-compatibility.h"
#include "shared/helpers.h"
goto err;
}
- if (weston_output_enable(ivi_output->output) < 0) {
+ if ((ret = weston_output_enable(ivi_output->output)) < 0) {
weston_log("Enabling remoted output \"%s\" failed.\n",
output_name);
goto err;
snprintf(buffer, sizeof buffer, "%.*s", (int) (end - p), p);
if (strstr(buffer, "xwayland.so")) {
- weston_log("Xwayland plug-in not supported!\n");
- p = end;
- while (*p == ',')
- p++;
- continue;
- }
-
- if (strstr(buffer, "systemd-notify.so")) {
+ *xwayland = true;
+ } else if (strstr(buffer, "systemd-notify.so")) {
weston_log("systemd-notify plug-in already loaded!\n");
- p = end;
- while (*p == ',')
- p++;
- continue;
- }
+ } else {
+ module_init = weston_load_module(buffer, "wet_module_init");
+ if (!module_init)
+ return -1;
- module_init = weston_load_module(buffer, "wet_module_init");
- if (!module_init)
- return -1;
+ if (module_init(ivi->compositor, *argc, argv) < 0)
+ return -1;
- if (module_init(ivi->compositor, *argc, argv) < 0)
- return -1;
+ }
p = end;
while (*p == ',')
return str;
}
+#if !defined(BUILD_XWAYLAND)
+int
+wet_load_xwayland(struct weston_compositor *comp)
+{
+ return -1;
+}
+#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)
{
char *log = NULL;
char *modules = NULL;
char *option_modules = NULL;
+ char *debug_scopes = NULL;
int help = 0;
int version = 0;
int no_config = 0;
{ 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);
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);
if (load_modules(&ivi, option_modules, &argc, argv, &xwayland) < 0)
goto error_compositor;
+ if (!xwayland) {
+ weston_config_section_get_bool(section, "xwayland", &xwayland,
+ false);
+ }
+
+ if (xwayland) {
+ if (wet_load_xwayland(ivi.compositor) < 0)
+ goto error_compositor;
+ }
+
if (ivi_policy_init(&ivi) < 0)
goto error_compositor;