- if (ivi->shell_client.ready) {
- ivi_check_pending_desktop_surface(surface);
- } else {
- /*
- * We delay creating "normal" desktop surfaces until later, to
- * give the shell-client an oppurtunity to set the surface as a
- * background/panel.
- */
- wl_list_insert(&ivi->pending_surfaces, &surface->link);
+ 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);
+
+ /* reset any caps to make sure we apply the new caps */
+ ivi_seat_reset_caps_sent(ivi);
+
+ output = get_focused_output(ivi->compositor);
+ if (!output)
+ output = get_default_output(ivi->compositor);
+
+ 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);
+ }