[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [14965] trunk/blender/source/blender/src/ sequence.c: == Sequencer ==
Peter Schlaile
peter at schlaile.de
Sun May 25 18:07:32 CEST 2008
Revision: 14965
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=14965
Author: schlaile
Date: 2008-05-25 18:07:32 +0200 (Sun, 25 May 2008)
Log Message:
-----------
== Sequencer ==
Fixes
[#12106] Memory leak in sequencer (>10MB/frame)
in parts: inner contents of meta strips are freed up after calculation
making more room for the cache.
Actually have to think of a mechanism, that remembers, which output
frames are asked for and caches only those.
Modified Paths:
--------------
trunk/blender/source/blender/src/sequence.c
Modified: trunk/blender/source/blender/src/sequence.c
===================================================================
--- trunk/blender/source/blender/src/sequence.c 2008-05-25 15:47:54 UTC (rev 14964)
+++ trunk/blender/source/blender/src/sequence.c 2008-05-25 16:07:32 UTC (rev 14965)
@@ -1632,7 +1632,37 @@
}
}
+static void free_metastrip_imbufs(ListBase *seqbasep, int cfra, int chanshown)
+{
+ Sequence* seq_arr[MAXSEQ+1];
+ int i;
+ TStripElem* se = 0;
+ evaluate_seq_frame_gen(seq_arr, seqbasep, cfra);
+
+ for (i = 0; i < MAXSEQ; i++) {
+ if (!video_seq_is_rendered(seq_arr[i])) {
+ continue;
+ }
+ se = give_tstripelem(seq_arr[i], cfra);
+ if (se) {
+ if (se->ibuf) {
+ IMB_freeImBuf(se->ibuf);
+
+ se->ibuf= 0;
+ se->ok= STRIPELEM_OK;
+ }
+
+ if (se->ibuf_comp) {
+ IMB_freeImBuf(se->ibuf_comp);
+
+ se->ibuf_comp = 0;
+ }
+ }
+ }
+
+}
+
static TStripElem* do_build_seq_array_recursively(
ListBase *seqbasep, int cfra, int chanshown);
@@ -1682,6 +1712,10 @@
use_limiter = TRUE;
}
}
+ if (meta_se) {
+ free_metastrip_imbufs(
+ &seq->seqbase, seq->start + se->nr, 0);
+ }
if (use_limiter) {
input_preprocess(seq, se, cfra);
More information about the Bf-blender-cvs
mailing list