X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fcompositor.c;h=2fb981b92043f71cc1b7aee33e766d9d429d2b80;hb=9cccfe829aab45fd2ab8475127d62ff22c5fedee;hp=22c49793016f512adc7231f8d47872c4589e2492;hpb=0bef8700f21b9e7898f1785ee654d4669d0117b4;p=src%2Fagl-compositor.git diff --git a/src/compositor.c b/src/compositor.c index 22c4979..2fb981b 100644 --- a/src/compositor.c +++ b/src/compositor.c @@ -39,7 +39,9 @@ #include #include +#ifdef HAVE_BACKEND_HEADLESS #include +#endif #ifdef HAVE_BACKEND_X11 #include #endif @@ -299,14 +301,14 @@ static int parse_transform(const char *transform, uint32_t *out) { static const struct { const char *name; uint32_t token; } transforms[] = { - { "normal", WL_OUTPUT_TRANSFORM_NORMAL }, - { "90", WL_OUTPUT_TRANSFORM_90 }, - { "180", WL_OUTPUT_TRANSFORM_180 }, - { "270", WL_OUTPUT_TRANSFORM_270 }, - { "flipped", WL_OUTPUT_TRANSFORM_FLIPPED }, - { "flipped-90", WL_OUTPUT_TRANSFORM_FLIPPED_90 }, - { "flipped-180", WL_OUTPUT_TRANSFORM_FLIPPED_180 }, - { "flipped-270", WL_OUTPUT_TRANSFORM_FLIPPED_270 }, + { "normal", WL_OUTPUT_TRANSFORM_NORMAL }, + { "rotate-90", WL_OUTPUT_TRANSFORM_90 }, + { "rotate-180", WL_OUTPUT_TRANSFORM_180 }, + { "rotate-270", WL_OUTPUT_TRANSFORM_270 }, + { "flipped", WL_OUTPUT_TRANSFORM_FLIPPED }, + { "flipped-rotate-90", WL_OUTPUT_TRANSFORM_FLIPPED_90 }, + { "flipped-rotate-180", WL_OUTPUT_TRANSFORM_FLIPPED_180 }, + { "flipped-rotate-270", WL_OUTPUT_TRANSFORM_FLIPPED_270 }, }; for (size_t i = 0; i < ARRAY_LENGTH(transforms); i++) @@ -752,6 +754,10 @@ ivi_enable_remote_outputs(struct ivi_compositor *ivi) } ivi_output = zalloc(sizeof(*ivi_output)); + if (!ivi_output) { + free(_name); + continue; + } ivi_output->ivi = ivi; ivi_output->name = _name; @@ -804,6 +810,10 @@ ivi_enable_waltham_outputs(struct ivi_compositor *ivi) } ivi_output = zalloc(sizeof(*ivi_output)); + if (!ivi_output) { + free(_name); + continue; + } ivi_output->ivi = ivi; ivi_output->name = _name; @@ -1087,6 +1097,7 @@ load_x11_backend(struct ivi_compositor *ivi, int *argc, char *argv[]) } #endif +#ifdef HAVE_BACKEND_HEADLESS static int load_headless_backend(struct ivi_compositor *ivi, int *argc, char **argv) { @@ -1134,6 +1145,13 @@ load_headless_backend(struct ivi_compositor *ivi, int *argc, char **argv) return 0; } +#else +static int +load_headless_backend(struct ivi_compositor *ivi, int *argc, char **argv) +{ + return -1; +} +#endif static int load_backend(struct ivi_compositor *ivi, const char *backend, @@ -1177,6 +1195,14 @@ load_modules(struct ivi_compositor *ivi, const char *modules, continue; } + if (strstr(buffer, "systemd-notify.so")) { + weston_log("systemd-notify plug-in already loaded!\n"); + p = end; + while (*p == ',') + p++; + continue; + } + module_init = weston_load_module(buffer, "wet_module_init"); if (!module_init) return -1; @@ -1240,7 +1266,7 @@ compositor_init_config(struct weston_compositor *compositor, &compositor->kb_repeat_delay, 400); weston_config_section_get_bool(section, "vt-switching", - &vt_switching, true); + &vt_switching, false); compositor->vt_switching = vt_switching; /* agl-compositor.ini [core] */ @@ -1563,7 +1589,7 @@ copy_command_line(int argc, char * const argv[]) } WL_EXPORT -int wet_main(int argc, char *argv[]) +int wet_main(int argc, char *argv[], const struct weston_testsuite_data *test_data) { struct ivi_compositor ivi = { 0 }; char *cmdline; @@ -1619,18 +1645,19 @@ int wet_main(int argc, char *argv[]) if (version) { printf(PACKAGE_STRING "\n"); - return EXIT_SUCCESS; + ret = EXIT_SUCCESS; + goto exit_signals; } - log_ctx = weston_log_ctx_compositor_create(); + log_ctx = weston_log_ctx_create(); if (!log_ctx) { fprintf(stderr, "Failed to initialize weston debug framework.\n"); - return ret; + goto exit_signals; } - log_scope = weston_compositor_add_log_scope(log_ctx, "log", - "agl-compositor log\n", - NULL, NULL, NULL); + log_scope = weston_log_ctx_add_log_scope(log_ctx, "log", + "agl-compositor log\n", + NULL, NULL, NULL); log_file_open(log); weston_log_set_handler(vlog, vlog_continue); @@ -1651,8 +1678,10 @@ int wet_main(int argc, char *argv[]) backend = choose_default_backend(); } /* from [core] */ - weston_config_section_get_bool(section, "hide-cursor", &ivi.hide_cursor, false); - weston_config_section_get_bool(section, "activate-by-default", &ivi.activate_by_default, true); + weston_config_section_get_bool(section, "hide-cursor", + &ivi.hide_cursor, false); + weston_config_section_get_bool(section, "activate-by-default", + &ivi.activate_by_default, true); display = wl_display_create(); loop = wl_display_get_event_loop(display); @@ -1673,7 +1702,7 @@ int wet_main(int argc, char *argv[]) if (!signals[i]) goto error_signals; - ivi.compositor = weston_compositor_create(display, log_ctx, &ivi); + ivi.compositor = weston_compositor_create(display, log_ctx, &ivi, test_data); if (!ivi.compositor) { weston_log("fatal: failed to create compositor.\n"); goto error_signals; @@ -1742,15 +1771,18 @@ int wet_main(int argc, char *argv[]) wl_display_destroy_clients(display); error_compositor: - weston_compositor_tear_down(ivi.compositor); - - weston_compositor_log_scope_destroy(log_scope); - log_scope = NULL; + free(backend); + backend = NULL; + free(modules); + modules = NULL; - weston_log_ctx_compositor_destroy(ivi.compositor); weston_compositor_destroy(ivi.compositor); - weston_log_subscriber_destroy_log(logger); + weston_log_scope_destroy(log_scope); + log_scope = NULL; + + weston_log_subscriber_destroy(logger); + weston_log_ctx_destroy(log_ctx); ivi_policy_destroy(ivi.policy); @@ -1765,5 +1797,10 @@ error_signals: if (ivi.config) weston_config_destroy(ivi.config); +exit_signals: + free(log); + free(config_file); + free(socket_name); + free(option_modules); return ret; }