surface->output = output;
surface->configure_private = fsurf;
- fsurf->view = weston_view_create (surface);
+ fsurf->view = weston_view_create(surface);
+ if (fsurf->view == NULL) {
+ weston_surface_destroy(surface);
+ free(fsurf);
+ return NULL;
+ }
fsurf->view->output = output;
weston_surface_set_size(surface, output->width, output->height);
output = get_default_output(shell->compositor);
if (ws->fsurf_front == NULL && (from || to)) {
ws->fsurf_front = create_focus_surface(shell->compositor, output);
- ws->fsurf_back = create_focus_surface(shell->compositor, output);
+ if (ws->fsurf_front == NULL)
+ return;
ws->fsurf_front->view->alpha = 0.0;
+
+ ws->fsurf_back = create_focus_surface(shell->compositor, output);
+ if (ws->fsurf_back == NULL) {
+ focus_surface_destroy(ws->fsurf_front);
+ return;
+ }
ws->fsurf_back->view->alpha = 0.0;
+
focus_surface_created = true;
} else {
wl_list_remove(&ws->fsurf_front->view->layer_link);