+ /* eventually, we would set the surface fullscreen, but the client
+ * hasn't resized correctly by this point, so terminate connection */
+ if (surface->state == RESIZING && is_fullscreen && !is_dim_same) {
+ struct weston_desktop_client *desktop_client =
+ weston_desktop_surface_get_client(dsurface);
+ struct wl_client *client =
+ weston_desktop_client_get_client(desktop_client);
+ wl_client_post_implementation_error(client,
+ "can not display surface due to invalid geometry."
+ " Client should perform a geometry resize!");
+ return;
+ }
+
+ /* this implies we resized correctly */
+ if (!weston_view_is_mapped(view)) {
+ weston_layer_entry_remove(&view->layer_link);
+
+ weston_view_set_output(view, woutput);
+ weston_view_set_position(view, woutput->x, woutput->y);
+ weston_layer_entry_insert(&ivi->fullscreen.view_list, &view->layer_link);
+
+ wsurface->is_mapped = true;
+ surface->view->is_mapped = true;
+ surface->state = FULLSCREEN;
+
+ weston_view_geometry_dirty(view);
+ weston_surface_damage(view->surface);
+
+ if (ivi_seat)
+ ivi_shell_activate_surface(surface, ivi_seat, WESTON_ACTIVATE_FLAG_NONE);
+
+ shell_advertise_app_state(ivi, app_id,
+ NULL, AGL_SHELL_DESKTOP_APP_STATE_ACTIVATED);
+
+ weston_log("Activation completed for app_id %s, role %s, "
+ "output %s\n", app_id,
+ ivi_layout_get_surface_role_name(surface),
+ output->name);
+
+ }
+}
+
+void
+ivi_layout_desktop_resize(struct ivi_surface *surface,
+ struct weston_geometry area)
+{
+ struct weston_desktop_surface *dsurf = surface->dsurface;
+ struct weston_view *view = surface->view;
+
+ int x = area.x;
+ int y = area.y;
+ int width = area.width;
+ int height = area.height;
+
+ weston_desktop_surface_set_size(dsurf,
+ width, height);
+
+ weston_view_set_position(view, x, y);
+
+ weston_view_geometry_dirty(view);
+ weston_surface_damage(view->surface);