diff options
Diffstat (limited to 'src/mesa/main/arbprogram.c')
-rw-r--r-- | src/mesa/main/arbprogram.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/mesa/main/arbprogram.c b/src/mesa/main/arbprogram.c index f474951d729..3f7acda9f32 100644 --- a/src/mesa/main/arbprogram.c +++ b/src/mesa/main/arbprogram.c @@ -200,13 +200,18 @@ _mesa_GenProgramsARB(GLsizei n, GLuint *ids) if (!ids) return; + _mesa_HashLockMutex(ctx->Shared->Programs); + first = _mesa_HashFindFreeKeyBlock(ctx->Shared->Programs, n); /* Insert pointer to dummy program as placeholder */ for (i = 0; i < (GLuint) n; i++) { - _mesa_HashInsert(ctx->Shared->Programs, first + i, &_mesa_DummyProgram); + _mesa_HashInsertLocked(ctx->Shared->Programs, first + i, + &_mesa_DummyProgram); } + _mesa_HashUnlockMutex(ctx->Shared->Programs); + /* Return the program names */ for (i = 0; i < (GLuint) n; i++) { ids[i] = first + i; |