Commit: d71cb229d054bb0482882fa9c0753b495179d7cb Author: Lukas Stockner Date: Wed Aug 5 02:20:59 2020 +0200 Branches: master https://developer.blender.org/rBd71cb229d054bb0482882fa9c0753b495179d7cb
Fix T79484: Crash when viewing Movie Clip as a Background Image in a Camera This seems to be caused by a change to the logic of movieclip_get_gputexture_ptr in rB97b597c. Differential Revision: https://developer.blender.org/D8469 =================================================================== M source/blender/blenkernel/intern/movieclip.c =================================================================== diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c index 04e61df1173..a5bd2ecf68a 100644 --- a/source/blender/blenkernel/intern/movieclip.c +++ b/source/blender/blenkernel/intern/movieclip.c @@ -1875,24 +1875,28 @@ static GPUTexture **movieclip_get_gputexture_ptr(MovieClip *clip, MovieClipUser *cuser, eGPUTextureTarget textarget) { - LISTBASE_FOREACH (MovieClip_RuntimeGPUTexture *, tex, &clip->runtime.gputextures) { + /* Check if we have an existing entry for that clip user. */ + MovieClip_RuntimeGPUTexture *tex; + for (tex = clip->runtime.gputextures.first; tex; tex = tex->next) { if (memcmp(&tex->user, cuser, sizeof(MovieClipUser)) == 0) { - if (tex == NULL) { - tex = (MovieClip_RuntimeGPUTexture *)MEM_mallocN(sizeof(MovieClip_RuntimeGPUTexture), - __func__); + break; + } + } - for (int i = 0; i < TEXTARGET_COUNT; i++) { - tex->gputexture[i] = NULL; - } + /* If not, allocate a new one. */ + if (tex == NULL) { + tex = (MovieClip_RuntimeGPUTexture *)MEM_mallocN(sizeof(MovieClip_RuntimeGPUTexture), + __func__); - memcpy(&tex->user, cuser, sizeof(MovieClipUser)); - BLI_addtail(&clip->runtime.gputextures, tex); - } - - return &tex->gputexture[textarget]; + for (int i = 0; i < TEXTARGET_COUNT; i++) { + tex->gputexture[i] = NULL; } + + memcpy(&tex->user, cuser, sizeof(MovieClipUser)); + BLI_addtail(&clip->runtime.gputextures, tex); } - return NULL; + + return &tex->gputexture[textarget]; } GPUTexture *BKE_movieclip_get_gpu_texture(MovieClip *clip, MovieClipUser *cuser) _______________________________________________ Bf-blender-cvs mailing list [email protected] https://lists.blender.org/mailman/listinfo/bf-blender-cvs
