- if (surface->role == IVI_SURFACE_ROLE_DESKTOP)
- output = surface->desktop.last_output;
- else if (surface->role == IVI_SURFACE_ROLE_POPUP)
- output = surface->popup.output;
- else
- return;
+ /* special corner-case, pending_surfaces which are never activated or
+ * being assigned an output might land here so just remove the surface */
+ if (output == NULL && surface->role == IVI_SURFACE_ROLE_NONE)
+ goto skip_output_asignment;
+
+ assert(output != NULL);
+
+ /* resize the active surface to the original size */
+ if (surface->role == IVI_SURFACE_ROLE_SPLIT_H ||
+ surface->role == IVI_SURFACE_ROLE_SPLIT_V) {
+ if (output && output->active) {
+ ivi_layout_desktop_resize(output->active, output->area_saved);
+ }
+ /* restore the area back so we can re-use it again if needed */
+ output->area = output->area_saved;
+ }