From 635ee2df37898fe408be565d189c2fb4dc5f61b1 Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Fri, 15 Apr 2005 17:25:07 +0000 Subject: added _mesa_share_state() --- src/mesa/main/context.c | 26 ++++++++++++++++++++++++++ src/mesa/main/context.h | 2 ++ 2 files changed, 28 insertions(+) diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c index a1e40e94af..acf5cc7d8b 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 daab59ce6b..4b041edc6d 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); -- cgit v1.2.3