X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fshell.c;h=301110a8f92bfa3ab2ec1255a75dc0b110d53ef4;hb=1941103136069caf55bf38eeac7795f69ec64cef;hp=2ecf4c0d602b412bcc35d5044b69bba889ff1521;hpb=16ab9c3ba0e226f384e88be67a306c8cb7cf635b;p=src%2Fagl-compositor.git diff --git a/src/shell.c b/src/shell.c index 2ecf4c0..301110a 100644 --- a/src/shell.c +++ b/src/shell.c @@ -54,6 +54,7 @@ agl_shell_desktop_advertise_application_id(struct ivi_compositor *ivi, struct ivi_surface *surface) { struct desktop_client *dclient; + static bool display_adv = false; if (surface->advertised_on_launch) return; @@ -63,7 +64,10 @@ agl_shell_desktop_advertise_application_id(struct ivi_compositor *ivi, const char *app_id = weston_desktop_surface_get_app_id(surface->dsurface); if (app_id == NULL) { - weston_log("WARNING app_is is null, unable to advertise\n"); + if (!display_adv) { + weston_log("WARNING app_is is null, unable to advertise\n"); + display_adv = true; + } return; } agl_shell_desktop_send_application(dclient->resource, app_id); @@ -107,6 +111,7 @@ ivi_set_desktop_surface_fullscreen(struct ivi_surface *surface) agl_shell_desktop_advertise_application_id(ivi, surface); } +#ifdef HAVE_WALTHAM void ivi_destroy_waltham_destroy(struct ivi_surface *surface) { @@ -177,6 +182,17 @@ ivi_output_notify_waltham_plugin(struct ivi_surface *surface) api->surface_push_to_remote(weston_surface, app_id, trans_remote, NULL); } +#else +void +ivi_destroy_waltham_destroy(struct ivi_surface *surface) +{ +} +static void +ivi_output_notify_waltham_plugin(struct ivi_surface *surface) +{ +} +#endif + static void ivi_set_desktop_surface_remote(struct ivi_surface *surface) { @@ -442,6 +458,53 @@ ivi_check_pending_desktop_surface_remote(struct ivi_surface *surface) return false; } +bool +ivi_check_pending_surface(struct ivi_surface *surface) +{ + struct ivi_compositor *ivi = surface->ivi; + struct wl_list *role_pending_list; + struct pending_popup *p_popup; + struct pending_split *p_split; + struct pending_fullscreen *p_fullscreen; + struct pending_remote *p_remote; + const char *app_id = + weston_desktop_surface_get_app_id(surface->dsurface); + + if (!app_id) + return false; + + role_pending_list = &ivi->popup_pending_apps; + wl_list_for_each(p_popup, role_pending_list, link) { + if (!strcmp(app_id, p_popup->app_id)) { + return true; + } + } + + role_pending_list = &ivi->split_pending_apps; + wl_list_for_each(p_split, role_pending_list, link) { + if (!strcmp(app_id, p_split->app_id)) { + return true; + } + } + + role_pending_list = &ivi->fullscreen_pending_apps; + wl_list_for_each(p_fullscreen, role_pending_list, link) { + if (!strcmp(app_id, p_fullscreen->app_id)) { + return true; + } + } + + role_pending_list = &ivi->remote_pending_apps; + wl_list_for_each(p_remote, role_pending_list, link) { + if (!strcmp(app_id, p_remote->app_id)) { + return true; + } + } + + /* else, we are a regular desktop surface */ + return false; +} + void ivi_check_pending_desktop_surface(struct ivi_surface *surface) @@ -695,7 +758,7 @@ remove_black_surface(struct ivi_output *output) weston_layer_entry_remove(&view->layer_link); weston_view_update_transform(view); - weston_output_damage(output->output); + weston_view_damage_below(view); } void @@ -722,7 +785,7 @@ insert_black_surface(struct ivi_output *output) view->surface->is_mapped = true; weston_view_update_transform(view); - weston_output_damage(output->output); + weston_view_damage_below(view); } static void