diff options
author | Campbell Barton <ideasman42@gmail.com> | 2008-03-10 23:58:53 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2008-03-10 23:58:53 +0300 |
commit | 2563733a5dddf68f7bbb1e6929dc24bf2a5fbc9a (patch) | |
tree | d6e29e4e53a546098c3c07f62b4c21dfdbe8186e | |
parent | 4ecf0fffafaf11ffe188d1938e837a4a477a4d2d (diff) |
stupid mistake for setting the bake mask (only masked half the faces), also exposed a possible bug since the malloc and null checks were done without mutex locking.
-rw-r--r-- | source/blender/render/intern/source/rendercore.c | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/source/blender/render/intern/source/rendercore.c b/source/blender/render/intern/source/rendercore.c index e8466d603a2..cab825888a1 100644 --- a/source/blender/render/intern/source/rendercore.c +++ b/source/blender/render/intern/source/rendercore.c @@ -2282,7 +2282,13 @@ static void shade_tface(BakeShade *bs) if (bs->usemask) { if (bs->ibuf->userdata==NULL) { - bs->ibuf->userdata = (void *)MEM_callocN(sizeof(char)*bs->rectx*bs->recty, "BakeMask"); + BLI_lock_thread(LOCK_CUSTOM1); + if (bs->ibuf->userdata==NULL) { /* since the thread was locked, its possible another thread alloced the value */ + bs->ibuf->userdata = (void *)MEM_callocN(sizeof(char)*bs->rectx*bs->recty, "BakeMask"); + bs->rect_mask= (char *)bs->ibuf->userdata; + } + BLI_unlock_thread(LOCK_CUSTOM1); + } else { bs->rect_mask= (char *)bs->ibuf->userdata; } } |