summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'media-video/effectv/files/effectv-0.3.11-timedist.patch')
-rw-r--r--media-video/effectv/files/effectv-0.3.11-timedist.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/media-video/effectv/files/effectv-0.3.11-timedist.patch b/media-video/effectv/files/effectv-0.3.11-timedist.patch
new file mode 100644
index 000000000000..e303d9290402
--- /dev/null
+++ b/media-video/effectv/files/effectv-0.3.11-timedist.patch
@@ -0,0 +1,51 @@
+This is a quick fix for bugs of effectv-0.3.11. TimeDistortion has a border
+crossing bug and a buffer uninitializing bug.
+
+Index: effects/timedist.c
+===================================================================
+--- effects/timedist.c (revision 478)
++++ effects/timedist.c (working copy)
+@@ -27,7 +27,16 @@
+ static int plane;
+ static int *warptime[2];
+ static int warptimeFrame;
++static int bgIsSet;
+
++static int setBackground(RGB32 *src)
++{
++ image_bgset_y(src);
++ bgIsSet = 1;
++
++ return 0;
++}
++
+ effect *timeDistortionRegister(void)
+ {
+ effect *entry;
+@@ -70,6 +79,7 @@
+
+ plane = 0;
+ image_set_threshold_y(MAGIC_THRESHOLD);
++ bgIsSet = 0;
+
+ state = 1;
+ return 0;
+@@ -94,6 +104,9 @@
+ int *p, *q;
+
+ memcpy(planetable[plane], src, PIXEL_SIZE * video_area);
++ if(!bgIsSet) {
++ setBackground(src);
++ }
+ diff = image_bgsubtract_update_y(src);
+
+ p = warptime[warptimeFrame ] + video_width + 1;
+@@ -109,7 +122,7 @@
+ q += 2;
+ }
+
+- q = warptime[warptimeFrame ^ 1] + video_width + 1;
++ q = warptime[warptimeFrame ^ 1];
+ for(i=0; i<video_area; i++) {
+ if(*diff++) {
+ *q = PLANES - 1;