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:
authorPeter Schlaile <peter@schlaile.de>2008-01-03 01:39:46 +0300
committerPeter Schlaile <peter@schlaile.de>2008-01-03 01:39:46 +0300
commit4aef3b64405d9ecf8412c29a25378cea3d330c65 (patch)
treea1d548f3ef1a245ba0a0c6b7733e0eddec36759c /source/blender/src/sequence.c
parent0d0fe50a70bc71f77167e8f85ab0686784a5bc61 (diff)
== Sequencer ==
Fixed: * crash with gamma tabs and blend modes * crash on rect -> rect_float blend mode input * alpha over and under have now input swapped
Diffstat (limited to 'source/blender/src/sequence.c')
-rw-r--r--source/blender/src/sequence.c29
1 files changed, 23 insertions, 6 deletions
diff --git a/source/blender/src/sequence.c b/source/blender/src/sequence.c
index f3a42f3eb72..953e6b197c6 100644
--- a/source/blender/src/sequence.c
+++ b/source/blender/src/sequence.c
@@ -1498,7 +1498,7 @@ static TStripElem* do_build_seq_array_recursively(
break;
}
- sh = get_sequence_blend(seq_arr[i]);
+ sh = get_sequence_blend(seq);
seq->facf0 = seq->facf1 = 1.0;
@@ -1549,7 +1549,7 @@ static TStripElem* do_build_seq_array_recursively(
}
break;
}
-
+
if (se->ibuf_comp) {
break;
}
@@ -1568,6 +1568,7 @@ static TStripElem* do_build_seq_array_recursively(
case 0: {
int x= se2->ibuf->x;
int y= se2->ibuf->y;
+ int swap_input = FALSE;
if (se1->ibuf_comp->rect_float ||
se2->ibuf->rect_float) {
@@ -1592,16 +1593,32 @@ static TStripElem* do_build_seq_array_recursively(
if (!se1->ibuf_comp->rect &&
!se2->ibuf_comp->rect_float) {
- IMB_rect_from_float(se1->ibuf);
+ IMB_rect_from_float(se1->ibuf_comp);
}
if (!se2->ibuf->rect &&
!se2->ibuf_comp->rect_float) {
IMB_rect_from_float(se2->ibuf);
}
- sh.execute(seq, cfra, seq->facf0, seq->facf1, x, y,
- se1->ibuf_comp, se2->ibuf, 0,
- se2->ibuf_comp);
+ /* bad hack, to fix crazy input ordering of
+ those two effects */
+
+ if (seq->blend_mode == SEQ_ALPHAOVER ||
+ seq->blend_mode == SEQ_ALPHAUNDER) {
+ swap_input = TRUE;
+ }
+
+ if (swap_input) {
+ sh.execute(seq, cfra,
+ seq->facf0, seq->facf1, x, y,
+ se2->ibuf, se1->ibuf_comp, 0,
+ se2->ibuf_comp);
+ } else {
+ sh.execute(seq, cfra,
+ seq->facf0, seq->facf1, x, y,
+ se1->ibuf_comp, se2->ibuf, 0,
+ se2->ibuf_comp);
+ }
IMB_cache_limiter_insert(se2->ibuf_comp);
IMB_cache_limiter_ref(se2->ibuf_comp);