X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fdesktop.c;h=479174dae32cb7058591194012200568518ee195;hb=9827cfd255780640650f7c9667daa7802dc1bb34;hp=f8c614f9db0c85cb4cad98d643891b64a0c72e7e;hpb=c6941d7484dd2b6c50ad37e2763f363b7264d4e5;p=src%2Fagl-compositor.git diff --git a/src/desktop.c b/src/desktop.c index f8c614f..479174d 100644 --- a/src/desktop.c +++ b/src/desktop.c @@ -61,6 +61,7 @@ desktop_surface_added(struct weston_desktop_surface *dsurface, void *userdata) struct weston_desktop_client *dclient; struct wl_client *client; struct ivi_surface *surface; + struct ivi_output *active_output = NULL; const char *app_id = NULL; dclient = weston_desktop_surface_get_client(dsurface); @@ -95,6 +96,9 @@ 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))) + ivi_set_pending_desktop_surface_remote(active_output, app_id); + if (ivi->shell_client.ready) { ivi_check_pending_desktop_surface(surface); weston_log("Added surface %p, app_id %s, role %s\n", surface, @@ -133,6 +137,12 @@ desktop_surface_removed(struct weston_desktop_surface *dsurface, void *userdata) weston_desktop_surface_get_surface(dsurface); struct ivi_output *output = ivi_layout_get_output_from_surface(surface); + + /* special corner-case, pending_surfaces which are never activated or + * being assigned an output might land here so just remove the surface */ + if (output == NULL && surface->role == IVI_SURFACE_ROLE_NONE) + goto skip_output_asignment; + assert(output != NULL); /* resize the active surface to the original size */ @@ -195,6 +205,7 @@ desktop_surface_removed(struct weston_desktop_surface *dsurface, void *userdata) output->background = NULL; } +skip_output_asignment: weston_log("Removed surface %p, app_id %s, role %s\n", surface, weston_desktop_surface_get_app_id(dsurface), ivi_layout_get_surface_role_name(surface)); @@ -221,9 +232,6 @@ desktop_committed(struct weston_desktop_surface *dsurface, case IVI_SURFACE_ROLE_REMOTE: ivi_layout_desktop_committed(surface); break; - case IVI_SURFACE_ROLE_PANEL: - ivi_layout_panel_committed(surface); - break; case IVI_SURFACE_ROLE_POPUP: ivi_layout_popup_committed(surface); break; @@ -236,6 +244,7 @@ desktop_committed(struct weston_desktop_surface *dsurface, break; case IVI_SURFACE_ROLE_NONE: case IVI_SURFACE_ROLE_BACKGROUND: + case IVI_SURFACE_ROLE_PANEL: default: /* fall through */ break; }