mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-01 05:58:05 +02:00
mesa: Check/propagate return value on st_make_current.
Prevents segmentation fault when trying to set the viewport/scissor after a context/drawable visual mismatch.
This commit is contained in:
parent
29c6c8eb18
commit
8aef306c34
2 changed files with 11 additions and 8 deletions
|
|
@ -263,9 +263,10 @@ void st_destroy_context( struct st_context *st )
|
|||
}
|
||||
|
||||
|
||||
void st_make_current(struct st_context *st,
|
||||
struct st_framebuffer *draw,
|
||||
struct st_framebuffer *read)
|
||||
GLboolean
|
||||
st_make_current(struct st_context *st,
|
||||
struct st_framebuffer *draw,
|
||||
struct st_framebuffer *read)
|
||||
{
|
||||
/* Call this periodically to detect when the user has begun using
|
||||
* GL rendering from multiple threads.
|
||||
|
|
@ -274,7 +275,8 @@ void st_make_current(struct st_context *st,
|
|||
|
||||
if (st) {
|
||||
GLboolean firstTime = st->ctx->FirstTimeCurrent;
|
||||
_mesa_make_current(st->ctx, &draw->Base, &read->Base);
|
||||
if(!_mesa_make_current(st->ctx, &draw->Base, &read->Base))
|
||||
return GL_FALSE;
|
||||
/* Need to initialize viewport here since draw->Base->Width/Height
|
||||
* will still be zero at this point.
|
||||
* This could be improved, but would require rather extensive work
|
||||
|
|
@ -286,9 +288,10 @@ void st_make_current(struct st_context *st,
|
|||
_mesa_set_scissor(st->ctx, 0, 0, w, h);
|
||||
|
||||
}
|
||||
return GL_TRUE;
|
||||
}
|
||||
else {
|
||||
_mesa_make_current(NULL, NULL, NULL);
|
||||
return _mesa_make_current(NULL, NULL, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -91,9 +91,9 @@ void *st_framebuffer_private( struct st_framebuffer *stfb );
|
|||
|
||||
void st_unreference_framebuffer( struct st_framebuffer *stfb );
|
||||
|
||||
void st_make_current(struct st_context *st,
|
||||
struct st_framebuffer *draw,
|
||||
struct st_framebuffer *read);
|
||||
GLboolean st_make_current(struct st_context *st,
|
||||
struct st_framebuffer *draw,
|
||||
struct st_framebuffer *read);
|
||||
|
||||
struct st_context *st_get_current(void);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue