Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2017-08-14 12:28:58 +0300
committerSergey Sharybin <sergey.vfx@gmail.com>2017-08-14 12:43:19 +0300
commitba84eb0f19224987a3158ea333cac76554f2a904 (patch)
tree4bc6b5a42571730560b0c9af5adb7570a2f44cb6 /source/blender/blenkernel/intern/tracking_util.c
parentd36579bb96b1db3b35ac92c2e4d96cef29c08b73 (diff)
Tracking: Make frame accessor cache safe for threading
Diffstat (limited to 'source/blender/blenkernel/intern/tracking_util.c')
-rw-r--r--source/blender/blenkernel/intern/tracking_util.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/source/blender/blenkernel/intern/tracking_util.c b/source/blender/blenkernel/intern/tracking_util.c
index 2d61e9e4019..bf2dabfab8b 100644
--- a/source/blender/blenkernel/intern/tracking_util.c
+++ b/source/blender/blenkernel/intern/tracking_util.c
@@ -707,12 +707,11 @@ static ImBuf *accessor_get_ibuf(TrackingImageAccessor *accessor,
{
ImBuf *ibuf, *orig_ibuf, *final_ibuf;
int64_t transform_key = 0;
-
if (transform != NULL) {
transform_key = libmv_frameAccessorgetTransformKey(transform);
}
-
/* First try to get fully processed image from the cache. */
+ BLI_spin_lock(&accessor->cache_lock);
ibuf = accesscache_get(accessor,
clip_index,
frame,
@@ -720,6 +719,7 @@ static ImBuf *accessor_get_ibuf(TrackingImageAccessor *accessor,
downscale,
region,
transform_key);
+ BLI_spin_unlock(&accessor->cache_lock);
if (ibuf != NULL) {
CACHE_PRINTF("Used buffer from cache for frame %d\n", frame);
return ibuf;
@@ -846,6 +846,7 @@ static ImBuf *accessor_get_ibuf(TrackingImageAccessor *accessor,
* cache and for how long.
*/
if (false) {
+ BLI_spin_lock(&accessor->cache_lock);
accesscache_put(accessor,
clip_index,
frame,
@@ -854,6 +855,7 @@ static ImBuf *accessor_get_ibuf(TrackingImageAccessor *accessor,
region,
transform_key,
final_ibuf);
+ BLI_spin_unlock(&accessor->cache_lock);
}
return final_ibuf;
@@ -990,6 +992,8 @@ TrackingImageAccessor *tracking_image_accessor_new(MovieClip *clips[MAX_ACCESSOR
accessor_get_mask_for_track_callback,
accessor_release_mask_callback);
+ BLI_spin_init(&accessor->cache_lock);
+
return accessor;
}