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:
authorRichard Antalik <richardantalik@gmail.com>2020-03-25 02:23:06 +0300
committerRichard Antalik <richardantalik@gmail.com>2020-03-25 02:23:06 +0300
commit188ccfb0dd6739fb6af8741aeecbc1da82c068ab (patch)
tree958a553b3f802c9ac3640cbc6bd5d02efc879453 /source/blender/blenkernel/BKE_sequencer.h
parente1c7549ac98aca4428d7125972f9f029f260faa8 (diff)
Fix T74662: Prefetching causes random crashes
Caused by 18b693bdbd6b, due to lack of thread safety. Beteween calling BKE_sequencer_cache_get_num_items and BKE_sequencer_cache_iterate New items could be inserted in the cache. BKE_sequencer_cache_iterate() now use 2 callbcack functions for initial setup during which buffers with correct length can be initialized and finally iterating. Additionally drawing of unselected items was fixed again introduced in 18b693bdbd6b. T74662 is reporting quite different symptoms, than I get on my machine, so I am not entirely sure this is complete fix. Reviewed By: brecht Differential Revision: https://developer.blender.org/D7220
Diffstat (limited to 'source/blender/blenkernel/BKE_sequencer.h')
-rw-r--r--source/blender/blenkernel/BKE_sequencer.h13
1 files changed, 8 insertions, 5 deletions
diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h
index df0f0e730a5..556cd7105a9 100644
--- a/source/blender/blenkernel/BKE_sequencer.h
+++ b/source/blender/blenkernel/BKE_sequencer.h
@@ -337,11 +337,14 @@ void BKE_sequencer_cache_cleanup_sequence(struct Scene *scene,
struct Sequence *seq,
struct Sequence *seq_changed,
int invalidate_types);
-void BKE_sequencer_cache_iterate(
- struct Scene *scene,
- void *userdata,
- bool callback(void *userdata, struct Sequence *seq, int cfra, int cache_type, float cost));
-size_t BKE_sequencer_cache_get_num_items(struct Scene *scene);
+void BKE_sequencer_cache_iterate(struct Scene *scene,
+ void *userdata,
+ bool callback_init(void *userdata, size_t item_count),
+ bool callback_iter(void *userdata,
+ struct Sequence *seq,
+ int cfra,
+ int cache_type,
+ float cost));
bool BKE_sequencer_cache_is_full(struct Scene *scene);
/* **********************************************************************