X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fmesa%2Fvbo%2Fvbo_context.c;h=bbf745b0c629bf1f25b5b1350ffd755545851d3e;hb=205e0e3e38b99c2fb0298755d99a38f111f0b96f;hp=235cee2429843cbb190579d2af39de3502dff2c9;hpb=520a455f55f6c6c529dc6b725a5225793c0b4b01;p=mesa.git diff --git a/src/mesa/vbo/vbo_context.c b/src/mesa/vbo/vbo_context.c index 235cee24298..bbf745b0c62 100644 --- a/src/mesa/vbo/vbo_context.c +++ b/src/mesa/vbo/vbo_context.c @@ -114,6 +114,8 @@ static void init_mat_currval(GLcontext *ctx) struct gl_client_array *arrays = vbo->mat_currval; GLuint i; + ASSERT(NR_MAT_ATTRIBS == MAT_ATTRIB_MAX); + memset(arrays, 0, sizeof(*arrays) * NR_MAT_ATTRIBS); /* Set up a constant (StrideB == 0) array for each current @@ -139,11 +141,7 @@ static void init_mat_currval(GLcontext *ctx) break; } - if (i < MAT_ATTRIB_MAX) - cl->Ptr = (const void *)ctx->Light.Material.Attrib[i]; - else - cl->Ptr = (const void *)ctx->Current.Attrib[VERT_ATTRIB_GENERIC0 + i]; - + cl->Ptr = (const void *)ctx->Light.Material.Attrib[i]; cl->Type = GL_FLOAT; cl->Stride = 0; cl->StrideB = 0; @@ -225,9 +223,10 @@ GLboolean _vbo_CreateContext( GLcontext *ctx ) * vtxfmt mechanism can be removed now. */ vbo_exec_init( ctx ); +#if FEATURE_dlist vbo_save_init( ctx ); +#endif - return GL_TRUE; } @@ -245,10 +244,14 @@ void _vbo_DestroyContext( GLcontext *ctx ) ctx->aelt_context = NULL; } - vbo_exec_destroy(ctx); - vbo_save_destroy(ctx); - FREE(vbo_context(ctx)); - ctx->swtnl_im = NULL; + if (vbo_context(ctx)) { + vbo_exec_destroy(ctx); +#if FEATURE_dlist + vbo_save_destroy(ctx); +#endif + FREE(vbo_context(ctx)); + ctx->swtnl_im = NULL; + } }