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
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/blender/blenkernel/BKE_sequencer.h2
-rw-r--r--source/blender/blenkernel/intern/sequencer.c37
-rw-r--r--source/blender/editors/space_sequencer/sequencer_edit.c10
-rw-r--r--source/blender/makesrna/intern/rna_sequencer.c2
-rw-r--r--source/blender/render/intern/source/pipeline.c2
5 files changed, 17 insertions, 36 deletions
diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h
index 69e10d1426b..51a64c97ca6 100644
--- a/source/blender/blenkernel/BKE_sequencer.h
+++ b/source/blender/blenkernel/BKE_sequencer.h
@@ -291,7 +291,7 @@ void BKE_sequencer_dupe_animdata(struct Scene *scene, const char *name_src, cons
int BKE_sequence_base_shuffle(struct ListBase *seqbasep, struct Sequence *test, struct Scene *evil_scene);
int BKE_sequence_base_shuffle_time(ListBase *seqbasep, struct Scene *evil_scene);
int BKE_sequence_base_isolated_sel_check(struct ListBase *seqbase);
-void BKE_sequencer_free_imbuf(struct Scene *scene, struct ListBase *seqbasep, int check_mem_usage, int keep_file_handles);
+void BKE_sequencer_free_imbuf(struct Scene *scene, struct ListBase *seqbasep, int for_render);
struct Sequence *BKE_sequence_dupli_recursive(struct Scene *scene, struct Scene *scene_to, struct Sequence *seq, int dupe_flag);
int BKE_sequence_swap(struct Sequence *seq_a, struct Sequence *seq_b, const char **error_str);
diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index 07c8da2837e..2596bf57f05 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -2993,46 +2993,27 @@ void BKE_sequence_invalidate_cache_for_modifier(Scene *scene, Sequence *seq)
sequence_invalidate_cache(scene, seq, TRUE, FALSE);
}
-void BKE_sequencer_free_imbuf(Scene *scene, ListBase *seqbase, int check_mem_usage, int keep_file_handles)
+void BKE_sequencer_free_imbuf(Scene *scene, ListBase *seqbase, int for_render)
{
Sequence *seq;
- if (check_mem_usage) {
- /* Let the cache limitor take care of this (schlaile) */
- /* While render let's keep all memory available for render
- * (ton)
- * At least if free memory is tight...
- * This can make a big difference in encoding speed
- * (it is around 4 times(!) faster, if we do not waste time
- * on freeing _all_ buffers every time on long timelines...)
- * (schlaile)
- */
-
- uintptr_t mem_in_use;
- uintptr_t mmap_in_use;
- uintptr_t max;
-
- mem_in_use = MEM_get_memory_in_use();
- mmap_in_use = MEM_get_mapped_memory_in_use();
- max = MEM_CacheLimiter_get_maximum();
-
- if (max == 0 || mem_in_use + mmap_in_use <= max) {
- return;
- }
- }
-
BKE_sequencer_cache_cleanup();
-
+
for (seq = seqbase->first; seq; seq = seq->next) {
+ if (for_render && CFRA >= seq->startdisp && CFRA <= seq->enddisp) {
+ continue;
+ }
+
if (seq->strip) {
- if (seq->type == SEQ_TYPE_MOVIE && !keep_file_handles)
+ if (seq->type == SEQ_TYPE_MOVIE) {
free_anim_seq(seq);
+ }
if (seq->type == SEQ_TYPE_SPEED) {
BKE_sequence_effect_speed_rebuild_map(scene, seq, 1);
}
}
if (seq->type == SEQ_TYPE_META) {
- BKE_sequencer_free_imbuf(scene, &seq->seqbase, FALSE, keep_file_handles);
+ BKE_sequencer_free_imbuf(scene, &seq->seqbase, for_render);
}
if (seq->type == SEQ_TYPE_SCENE) {
/* FIXME: recurs downwards,
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index 828376654be..f47eb339878 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -170,7 +170,7 @@ static void proxy_endjob(void *pjv)
BKE_sequencer_proxy_rebuild_finish(link->data, pj->stop);
}
- BKE_sequencer_free_imbuf(pj->scene, &ed->seqbase, FALSE, FALSE);
+ BKE_sequencer_free_imbuf(pj->scene, &ed->seqbase, FALSE);
WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, pj->scene);
}
@@ -1348,7 +1348,7 @@ static int sequencer_refresh_all_exec(bContext *C, wmOperator *UNUSED(op))
Scene *scene = CTX_data_scene(C);
Editing *ed = BKE_sequencer_editing_get(scene, FALSE);
- BKE_sequencer_free_imbuf(scene, &ed->seqbase, FALSE, FALSE);
+ BKE_sequencer_free_imbuf(scene, &ed->seqbase, FALSE);
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
@@ -2911,7 +2911,7 @@ static int sequencer_change_effect_input_exec(bContext *C, wmOperator *op)
BKE_sequencer_update_changed_seq_and_deps(scene, seq, 0, 1);
/* important else we don't get the imbuf cache flushed */
- BKE_sequencer_free_imbuf(scene, &ed->seqbase, FALSE, FALSE);
+ BKE_sequencer_free_imbuf(scene, &ed->seqbase, FALSE);
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
@@ -2971,7 +2971,7 @@ static int sequencer_change_effect_type_exec(bContext *C, wmOperator *op)
BKE_sequencer_update_changed_seq_and_deps(scene, seq, 0, 1);
/* important else we don't get the imbuf cache flushed */
- BKE_sequencer_free_imbuf(scene, &ed->seqbase, FALSE, FALSE);
+ BKE_sequencer_free_imbuf(scene, &ed->seqbase, FALSE);
WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene);
@@ -3044,7 +3044,7 @@ static int sequencer_change_path_exec(bContext *C, wmOperator *op)
BKE_sequence_calc(scene, seq);
/* important else we don't get the imbuf cache flushed */
- BKE_sequencer_free_imbuf(scene, &ed->seqbase, FALSE, FALSE);
+ BKE_sequencer_free_imbuf(scene, &ed->seqbase, FALSE);
}
else {
/* lame, set rna filepath */
diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c
index 593d931374d..e3e467a9abb 100644
--- a/source/blender/makesrna/intern/rna_sequencer.c
+++ b/source/blender/makesrna/intern/rna_sequencer.c
@@ -617,7 +617,7 @@ static void rna_Sequence_update_reopen_files(Main *UNUSED(bmain), Scene *UNUSED(
Scene *scene = (Scene *) ptr->id.data;
Editing *ed = BKE_sequencer_editing_get(scene, FALSE);
- BKE_sequencer_free_imbuf(scene, &ed->seqbase, FALSE, FALSE);
+ BKE_sequencer_free_imbuf(scene, &ed->seqbase, FALSE);
if (RNA_struct_is_a(ptr->type, &RNA_SoundSequence))
BKE_sequencer_update_sound_bounds(scene, ptr->data);
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index 44bd2c6d50f..5f110410978 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -1689,7 +1689,7 @@ static void do_render_seq(Render *re)
if (recurs_depth == 0) { /* with nested scenes, only free on toplevel... */
Editing *ed = re->scene->ed;
if (ed)
- BKE_sequencer_free_imbuf(re->scene, &ed->seqbase, TRUE, TRUE);
+ BKE_sequencer_free_imbuf(re->scene, &ed->seqbase, TRUE);
}
IMB_freeImBuf(ibuf);
}