From: Brian Paul Date: Fri, 15 Apr 2005 17:25:07 +0000 (+0000) Subject: added _mesa_share_state() X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=635ee2df37898fe408be565d189c2fb4dc5f61b1;p=mesa.git added _mesa_share_state() --- diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index a1e40e94af2..acf5cc7d8bc 100644 --- a/src/mesa/main/context.c +++ b/src/mesa/main/context.c @@ -2000,6 +2000,32 @@ _mesa_make_current2( GLcontext *newCtx, GLframebuffer *drawBuffer, } } + +/** + * Make context 'ctx' share the display lists, textures and programs + * that are associated with 'ctxToShare'. + * Any display lists, textures or programs associated with 'ctx' will + * be deleted if nobody else is sharing them. + */ +GLboolean +_mesa_share_state(GLcontext *ctx, GLcontext *ctxToShare) +{ + if (ctx && ctxToShare && ctx->Shared && ctxToShare->Shared) { + ctx->Shared->RefCount--; + if (ctx->Shared->RefCount == 0) { + free_shared_state(ctx, ctx->Shared); + } + ctx->Shared = ctxToShare->Shared; + ctx->Shared->RefCount++; + return GL_TRUE; + } + else { + return GL_FALSE; + } +} + + + /** * Get current context for the calling thread. * diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h index daab59ce6b4..4b041edc6d5 100644 --- a/src/mesa/main/context.h +++ b/src/mesa/main/context.h @@ -162,6 +162,8 @@ extern void _mesa_make_current2( GLcontext *ctx, GLframebuffer *drawBuffer, GLframebuffer *readBuffer ); +extern GLboolean +_mesa_share_state(GLcontext *ctx, GLcontext *ctxToShare); extern GLcontext * _mesa_get_current_context(void);