- 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);
+
+ /*
+ * We delay creating "normal" desktop surfaces until later, to
+ * give the shell-client an oppurtunity to set the surface as a
+ * background/panel.
+ * Also delay the creation in order to have a valid app_id
+ * which will be used to set the proper role.
+ */
+ weston_log("Added surface %p, app_id %s to pending list\n",
+ surface, app_id);
+ wl_list_insert(&ivi->pending_surfaces, &surface->link);
+