st_framebuffer_validate discards the result of the validate interface method, preventing functions up the call stack from being notified of any failure. Update st_framebuffer_validate to resolve this, and amend st_api_make_current to propagate this failure up the stack. --- src/mesa/state_tracker/st_manager.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/src/mesa/state_tracker/st_manager.c b/src/mesa/state_tracker/st_manager.c index 380b05c53f..a6eb5aef23 100644 --- a/src/mesa/state_tracker/st_manager.c +++ b/src/mesa/state_tracker/st_manager.c @@ -180,7 +180,7 @@ st_context_validate(struct st_context *st, * drawable state, not context state, and can be freed by another pipe * context). */ -static void +static boolean st_framebuffer_validate(struct st_framebuffer *stfb, struct st_context *st) { @@ -192,7 +192,7 @@ st_framebuffer_validate(struct st_framebuffer *stfb, new_stamp = p_atomic_read(&stfb->iface->stamp); if (stfb->iface_stamp == new_stamp) - return; + return TRUE; memset(textures, 0, stfb->num_statts * sizeof(textures[0])); @@ -200,7 +200,7 @@ st_framebuffer_validate(struct st_framebuffer *stfb, do { if (!stfb->iface->validate(&st->iface, stfb->iface, stfb->statts, stfb->num_statts, textures)) - return; + return FALSE; stfb->iface_stamp = new_stamp; new_stamp = p_atomic_read(&stfb->iface->stamp); @@ -259,6 +259,8 @@ st_framebuffer_validate(struct st_framebuffer *stfb, ++stfb->stamp; _mesa_resize_framebuffer(st->ctx, &stfb->Base, width, height); } + + return TRUE; } @@ -1035,9 +1037,12 @@ st_api_make_current(struct st_api *stapi, struct st_context_iface *stctxi, } if (stdraw && stread) { - st_framebuffer_validate(stdraw, st); + if (!st_framebuffer_validate(stdraw, st)) + return FALSE; + if (stread != stdraw) - st_framebuffer_validate(stread, st); + if (!st_framebuffer_validate(stread, st)) + return FALSE; ret = _mesa_make_current(st->ctx, &stdraw->Base, &stread->Base); -- 2.14.3
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev