X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fmain.c;h=e00cf1274bdcd65737d4a01fe8b478d1453e913d;hb=fd9fc2da91e56a64e9ddb87eb46151c186f6c79f;hp=590977f138039aa349d363157589f59fb72d1540;hpb=9bb8ea6f6156502bf1639ce349907b391e9b124d;p=src%2Fagl-compositor.git diff --git a/src/main.c b/src/main.c index 590977f..e00cf12 100644 --- a/src/main.c +++ b/src/main.c @@ -57,6 +57,10 @@ #include "remote.h" #endif +#ifdef HAVE_WALTHAM +#include +#endif + static int cached_tm_mday = -1; static struct weston_log_scope *log_scope; @@ -558,6 +562,38 @@ heads_changed(struct wl_listener *listener, void *arg) } } +#ifdef HAVE_WALTHAM +static int +load_waltham_plugin(struct ivi_compositor *ivi, struct weston_config *config) +{ + struct weston_compositor *compositor = ivi->compositor; + int (*module_init)(struct weston_compositor *wc); + + module_init = weston_load_module("waltham-transmitter.so", + "wet_module_init"); + if (!module_init) + return -1; + + if (module_init(compositor) < 0) + return -1; + + ivi->waltham_transmitter_api = weston_get_transmitter_api(compositor); + if (!ivi->waltham_transmitter_api) { + weston_log("Failed to load waltham-transmitter plugin.\n"); + return -1; + } + + weston_log("waltham-transmitter plug-in loaded\n"); + return 0; +} +#else +static int +load_waltham_plugin(struct ivi_compositor *ivi, struct weston_config *config) +{ + return -1; +} +#endif + #ifdef HAVE_REMOTING static int drm_backend_remoted_output_configure(struct weston_output *output, @@ -712,6 +748,7 @@ ivi_enable_remote_outputs(struct ivi_compositor *ivi) ivi_output->ivi = ivi; ivi_output->name = _name; ivi_output->config = remote_section; + ivi_output->type = OUTPUT_REMOTE; if (remote_output_init(ivi_output, ivi->compositor, remote_section, ivi->remoting_api)) { @@ -804,6 +841,7 @@ load_drm_backend(struct ivi_compositor *ivi, int *argc, char *argv[]) } load_remoting_plugin(ivi, ivi->config); + load_waltham_plugin(ivi, ivi->config); error: free(config.gbm_format); @@ -1392,7 +1430,6 @@ int main(int argc, char *argv[]) wl_list_init(&ivi.remote_pending_apps); wl_list_init(&ivi.desktop_clients); - /* Prevent any clients we spawn getting our stdin */ os_fd_set_cloexec(STDIN_FILENO); @@ -1489,11 +1526,11 @@ int main(int argc, char *argv[]) if (ivi.remoting_api) ivi_enable_remote_outputs(&ivi); - ivi_shell_init_black_fs(&ivi); - if (create_listening_socket(display, socket_name) < 0) goto error_compositor; + ivi_shell_init_black_fs(&ivi); + ivi.compositor->exit = handle_exit; weston_compositor_wake(ivi.compositor);