X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fshell.c;h=301110a8f92bfa3ab2ec1255a75dc0b110d53ef4;hb=1941103136069caf55bf38eeac7795f69ec64cef;hp=5a8cc42215f7d257c1ed00f7971ef2288387b8a0;hpb=54ab8a8cc447323d6a25ffdad5f1e98ac595bf26;p=src%2Fagl-compositor.git diff --git a/src/shell.c b/src/shell.c index 5a8cc42..301110a 100644 --- a/src/shell.c +++ b/src/shell.c @@ -458,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) @@ -711,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 @@ -738,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