X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=src%2Fdesktop.c;h=3b83d4c2292471ae596fa740d771b3160aed2911;hb=8f85581e96bc71512cbef015ff12dc6441c07d9c;hp=f3763dedeeb95bff94677e44ee0dd86c4ed97228;hpb=e4226be8727e4f8e19292b6d1d19a9ba2bcdd58d;p=src%2Fagl-compositor.git diff --git a/src/desktop.c b/src/desktop.c index f3763de..3b83d4c 100644 --- a/src/desktop.c +++ b/src/desktop.c @@ -103,6 +103,36 @@ get_focused_output(struct weston_compositor *compositor) return output; } +static void +desktop_surface_added_configure(struct ivi_surface *surface, + struct ivi_output *ivi_output) +{ + enum ivi_surface_role role = IVI_SURFACE_ROLE_NONE; + struct weston_desktop_surface *dsurface = surface->dsurface; + + ivi_check_pending_surface_desktop(surface, &role); + if ((role != IVI_SURFACE_ROLE_DESKTOP && + role != IVI_SURFACE_ROLE_FULLSCREEN) || + role == IVI_SURFACE_ROLE_NONE) + return; + + if (role == IVI_SURFACE_ROLE_FULLSCREEN) { + struct ivi_output *bg_output = + ivi_layout_find_bg_output(surface->ivi); + assert(bg_output); + weston_desktop_surface_set_fullscreen(dsurface, true); + weston_desktop_surface_set_size(dsurface, + bg_output->output->width, + bg_output->output->height); + return; + } + + weston_desktop_surface_set_maximized(dsurface, true); + weston_desktop_surface_set_size(dsurface, + ivi_output->area.width, + ivi_output->area.height); +} + static void desktop_surface_added(struct weston_desktop_surface *dsurface, void *userdata) @@ -134,7 +164,7 @@ desktop_surface_added(struct weston_desktop_surface *dsurface, void *userdata) surface->ivi = ivi; surface->dsurface = dsurface; surface->role = IVI_SURFACE_ROLE_NONE; - surface->activated_by_default = false; + surface->mapped = false; surface->advertised_on_launch = false; surface->checked_pending = false; wl_list_init(&surface->link); @@ -168,16 +198,7 @@ desktop_surface_added(struct weston_desktop_surface *dsurface, void *userdata) if (output && ivi->shell_client.ready) { struct ivi_output *ivi_output = to_ivi_output(output); - - /* verify if by any chance this surfaces hasn't been assigned a - * different role before sending the maximized state */ - if (!ivi_check_pending_surface(surface)) { - weston_log("Setting surface to initial size of surface to %dx%d\n", - ivi_output->area.width, ivi_output->area.height); - weston_desktop_surface_set_maximized(dsurface, true); - weston_desktop_surface_set_size(dsurface, - ivi_output->area.width, ivi_output->area.height); - } + desktop_surface_added_configure(surface, ivi_output); } /* * We delay creating "normal" desktop surfaces until later, to @@ -335,8 +356,6 @@ desktop_committed(struct weston_desktop_surface *dsurface, !wl_list_empty(&surface->ivi->desktop_clients)) wl_signal_emit(&surface->signal_advertise_app, surface); - weston_compositor_schedule_repaint(surface->ivi->compositor); - switch (surface->role) { case IVI_SURFACE_ROLE_DESKTOP: case IVI_SURFACE_ROLE_REMOTE: