X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fdesktop.c;h=ed648c24e16347b6abbcf929249ac62688b3cc49;hb=refs%2Fchanges%2F23%2F28923%2F2;hp=0f1da18bb1c0d8f07b94301668df93f110e2b398;hpb=76fa1b83638310c23bf3ca952e4479499b8ecb43;p=src%2Fagl-compositor.git diff --git a/src/desktop.c b/src/desktop.c index 0f1da18..ed648c2 100644 --- a/src/desktop.c +++ b/src/desktop.c @@ -211,8 +211,10 @@ desktop_surface_added(struct weston_desktop_surface *dsurface, void *userdata) app_id = weston_desktop_surface_get_app_id(dsurface); - if ((active_output = ivi_layout_find_with_app_id(app_id, ivi))) + if ((active_output = ivi_layout_find_with_app_id(app_id, ivi))) { ivi_set_pending_desktop_surface_remote(active_output, app_id); + shell_send_app_on_output(ivi, app_id, active_output->output->name); + } /* reset any caps to make sure we apply the new caps */ ivi_seat_reset_caps_sent(ivi); @@ -241,8 +243,9 @@ desktop_surface_added(struct weston_desktop_surface *dsurface, void *userdata) } -static bool -desktop_surface_check_last_surfaces(struct ivi_output *ivi_output, enum ivi_surface_role role) +bool +ivi_surface_count_one(struct ivi_output *ivi_output, + enum ivi_surface_role role) { int count = 0; struct ivi_surface *surf; @@ -322,15 +325,11 @@ desktop_surface_removed(struct weston_desktop_surface *dsurface, void *userdata) if (ivi_seat && ivi_seat->focused_surface == wsurface) ivi_seat->focused_surface = NULL; - if (surface->role == IVI_SURFACE_ROLE_REMOTE && - output->type == OUTPUT_REMOTE) - ivi_destroy_waltham_destroy(surface); - /* check if there's a last 'remote' surface and insert a black * surface view if there's no background set for that output */ - if (desktop_surface_check_last_surfaces(output, IVI_SURFACE_ROLE_REMOTE) || - desktop_surface_check_last_surfaces(output, IVI_SURFACE_ROLE_DESKTOP)) + if (ivi_surface_count_one(output, IVI_SURFACE_ROLE_REMOTE) || + ivi_surface_count_one(output, IVI_SURFACE_ROLE_DESKTOP)) if (!output->background) insert_black_curtain(output); @@ -393,11 +392,19 @@ desktop_committed(struct weston_desktop_surface *dsurface, return; if (ivi->shell_client.ready && !surface->checked_pending) { - const char * app_id = weston_desktop_surface_get_app_id(dsurface); + struct ivi_output *remote_output = NULL; + const char *app_id = weston_desktop_surface_get_app_id(dsurface); weston_log("Checking pending surface %p, app_id %s\n", surface, app_id); wl_list_remove(&surface->link); wl_list_init(&surface->link); + + if ((remote_output = ivi_layout_find_with_app_id(app_id, ivi))) { + ivi_set_pending_desktop_surface_remote(remote_output, app_id); + shell_send_app_on_output(ivi, app_id, remote_output->output->name); + } + + ivi_check_pending_desktop_surface(surface); surface->checked_pending = true; @@ -426,9 +433,11 @@ desktop_committed(struct weston_desktop_surface *dsurface, switch (surface->role) { case IVI_SURFACE_ROLE_DESKTOP: - case IVI_SURFACE_ROLE_REMOTE: ivi_layout_desktop_committed(surface); break; + case IVI_SURFACE_ROLE_REMOTE: + ivi_layout_remote_committed(surface); + break; case IVI_SURFACE_ROLE_POPUP: ivi_layout_popup_committed(surface); break; @@ -531,6 +540,7 @@ ivi_shell_destroy(struct wl_listener *listener, void *data) ivi_shell_finalize(ivi); ivi_compositor_destroy_pending_surfaces(ivi); + ivi_layout_destroy_saved_outputs(ivi); weston_desktop_destroy(ivi->desktop); wl_list_remove(&listener->link);