X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fshell.c;h=b5f13b46f00e914bdba595beddbdbacdc7ff1894;hb=refs%2Fheads%2Fsandbox%2Fmvlad%2Fadd-waltham-support;hp=21f321d77a724ae2f7164cbcf8d69056de06a4d5;hpb=097713d92a9b42457e5d10de8a5c500aec926f1b;p=src%2Fagl-compositor.git diff --git a/src/shell.c b/src/shell.c index 21f321d..b5f13b4 100644 --- a/src/shell.c +++ b/src/shell.c @@ -42,6 +42,10 @@ #include "agl-shell-server-protocol.h" #include "agl-shell-desktop-server-protocol.h" +#ifdef HAVE_WALTHAM +#include +#endif + static void create_black_surface_view(struct ivi_output *output); @@ -95,6 +99,41 @@ ivi_set_desktop_surface_fullscreen(struct ivi_surface *surface) agl_shell_desktop_advertise_application_id(ivi, surface); } +static void +ivi_output_notify_waltham_plugin(struct ivi_surface *surface) +{ + struct ivi_compositor *ivi = surface->ivi; + const struct weston_transmitter_api *api = ivi->waltham_transmitter_api; + struct weston_transmitter *transmitter; + struct weston_transmitter_remote *trans_remote; + struct weston_surface *weston_surface; + struct weston_output *woutput = surface->remote.output->output; + const char *app_id; + + if (!api) + return; + + transmitter = api->transmitter_get(ivi->compositor); + + if (!transmitter) + return; + + trans_remote = api->get_transmitter_remote(woutput->name, transmitter); + + if (!trans_remote) { + weston_log("Could not find a valie weston_transmitter_remote " + "that matches the output %s\n", woutput->name); + return; + } + + app_id = weston_desktop_surface_get_app_id(surface->dsurface); + weston_surface = + weston_desktop_surface_get_surface(surface->dsurface); + + weston_log("Forwarding app_id %s to remote %s\n", app_id, woutput->name); + api->surface_push_to_remote(weston_surface, app_id, trans_remote, NULL); +} + static void ivi_set_desktop_surface_remote(struct ivi_surface *surface) { @@ -115,6 +154,9 @@ ivi_set_desktop_surface_remote(struct ivi_surface *surface) if (view->is_mapped || view->surface->is_mapped) remove_black_surface(output); + if (output->type == OUTPUT_WALTHAM) + ivi_output_notify_waltham_plugin(surface); + wl_list_insert(&ivi->surfaces, &surface->link); }