draw: fix out of memory handling in polygon stipple stage
This commit is contained in:
@@ -363,8 +363,12 @@ generate_pstip_fs(struct pstip_stage *pstip)
|
||||
assert(pstip->fs->sampler_unit < PIPE_MAX_SAMPLERS);
|
||||
|
||||
pstip->fs->pstip_fs = pstip->driver_create_fs_state(pstip->pipe, &pstip_fs);
|
||||
|
||||
|
||||
FREE((void *)pstip_fs.tokens);
|
||||
|
||||
if (!pstip->fs->pstip_fs)
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@@ -603,13 +607,16 @@ pstip_destroy(struct draw_stage *stage)
|
||||
}
|
||||
|
||||
|
||||
/** Create a new polygon stipple drawing stage object */
|
||||
static struct pstip_stage *
|
||||
draw_pstip_stage(struct draw_context *draw)
|
||||
draw_pstip_stage(struct draw_context *draw, struct pipe_context *pipe)
|
||||
{
|
||||
struct pstip_stage *pstip = CALLOC_STRUCT(pstip_stage);
|
||||
if (pstip == NULL)
|
||||
goto fail;
|
||||
|
||||
pstip->pipe = pipe;
|
||||
|
||||
pstip->stage.draw = draw;
|
||||
pstip->stage.name = "pstip";
|
||||
pstip->stage.next = NULL;
|
||||
@@ -765,14 +772,12 @@ draw_install_pstipple_stage(struct draw_context *draw,
|
||||
/*
|
||||
* Create / install pgon stipple drawing / prim stage
|
||||
*/
|
||||
pstip = draw_pstip_stage( draw );
|
||||
pstip = draw_pstip_stage( draw, pipe );
|
||||
if (pstip == NULL)
|
||||
goto fail;
|
||||
|
||||
draw->pipeline.pstipple = &pstip->stage;
|
||||
|
||||
pstip->pipe = pipe;
|
||||
|
||||
/* create special texture, sampler state */
|
||||
if (!pstip_create_texture(pstip))
|
||||
goto fail;
|
||||
|
||||
Reference in New Issue
Block a user