Fix nouveau_pipe_create() / nouveau_context_init(): raise an error if the screen/pipe creation failed

This commit is contained in:
Victor Stinner 2009-03-06 13:52:19 +01:00 committed by Ben Skeggs
parent a06dd4de87
commit 19229fcf3a
2 changed files with 10 additions and 3 deletions

View File

@ -132,8 +132,10 @@ nouveau_context_init(struct nouveau_screen *nv_screen,
struct pipe_screen *pscreen;
pipe = nouveau_pipe_create(nv);
if (!pipe)
if (!pipe) {
NOUVEAU_ERR("Couldn't create hw pipe\n");
return 1;
}
pscreen = nvc->pscreen;
nv->cap.hw_vertex_buffer =
@ -199,7 +201,7 @@ nouveau_context_cleanup(struct nouveau_context *nv)
nv->nv_screen->nvc = NULL;
}
}
/* XXX: Who cleans up the pipe? */
}

View File

@ -133,8 +133,13 @@ nouveau_pipe_create(struct nouveau_context *nv)
ws = nouveau_create_pipe_winsys(nv);
if (!nvc->pscreen)
if (!nvc->pscreen) {
nvc->pscreen = hws_create(ws, nvws);
if (!nvc->pscreen) {
NOUVEAU_ERR("Couldn't create hw screen\n");
return NULL;
}
}
nvc->pctx[nv->pctx_id] = hw_create(nvc->pscreen, nv->pctx_id);
return nvc->pctx[nv->pctx_id];
}