Fix threading conflict with movie cache line
It was possible that a render thread will be freeing cache while the interface is iterating over cache items to build cache line. Found while looking into T94738. It might be a fix, but I am unable to reproduce the original issue, so can not know for sure whether there is something else going or or not.
This commit is contained in:
parent
f6564df351
commit
f4c8b4eb3e
Notes:
blender-bot
2023-02-14 04:24:05 +01:00
Referenced by issue #94738, Blender crashing when geometry nodes with a large animated image sequences are used
|
@ -1609,8 +1609,10 @@ void BKE_movieclip_get_cache_segments(MovieClip *clip,
|
|||
if (clip->cache) {
|
||||
int proxy = rendersize_to_proxy(user, clip->flag);
|
||||
|
||||
BLI_thread_lock(LOCK_MOVIECLIP);
|
||||
IMB_moviecache_get_cache_segments(
|
||||
clip->cache->moviecache, proxy, user->render_flag, r_totseg, r_points);
|
||||
BLI_thread_unlock(LOCK_MOVIECLIP);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -541,7 +541,10 @@ void draw_image_cache(const bContext *C, ARegion *region)
|
|||
int num_segments = 0;
|
||||
int *points = NULL;
|
||||
|
||||
BLI_mutex_lock(image->runtime.cache_mutex);
|
||||
IMB_moviecache_get_cache_segments(image->cache, IMB_PROXY_NONE, 0, &num_segments, &points);
|
||||
BLI_mutex_unlock(image->runtime.cache_mutex);
|
||||
|
||||
ED_region_cache_draw_cached_segments(
|
||||
region, num_segments, points, sfra + sima->iuser.offset, efra + sima->iuser.offset);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue