[gegl] gegl:copy-buffer: prevent threading of this op



commit df7547ae473e09aba351759db0ffc7f85257004c
Author: Øyvind Kolås <pippin gimp org>
Date:   Sat Aug 19 16:30:39 2017 +0200

    gegl:copy-buffer: prevent threading of this op
    
    For me this fixes artifacts when mixing opencl and threading for
    bug #785521

 gcut/default.edl                             |    8 ++++----
 gcut/default.edl.inc                         |    8 ++++----
 gegl/operation/gegl-operation-filter.c       |    2 ++
 gegl/operation/gegl-operation-point-filter.c |    2 ++
 operations/common/copy-buffer.c              |    1 +
 5 files changed, 13 insertions(+), 8 deletions(-)
---
diff --git a/gcut/default.edl b/gcut/default.edl
index 7979f29..f0c7919 100644
--- a/gcut/default.edl
+++ b/gcut/default.edl
@@ -4,13 +4,13 @@ output-path=gcut.mp4
 video-width=800
 video-height=600
 fps=25
-selection-start=34.904827117919922
-selection-end=34.920000000000002
+selection-start=18.624811172485352
+selection-end=18.640000000000001
 frame-scale=0.058649999999999994
 t0=0
-frame-pos=22.079999999999998
+frame-pos=18.640000000000001
 
--- 21s 23s gegl:pixelize opi=0:0 svg:dst-over opi=0:0 aux=[  gegl:text opi=0:0 string='Hfdel lo' 
size=0.10000000000000001rel color='rgb(1.0000, 1.0000, 1.0000)' ]  
+-- 21s 23s gegl:pixelize opi=0:0 svg:dst-over opi=0:0 
 gegl:color value=black gegl:crop width=400 height=400 1.24s 2s -- 
 gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 0s 2s -- [fade=1.04s] svg:src-over opi=0:0 aux=[  
gegl:text opi=0:0 string='note: this is a gcut video\nproject for testing features\nit relies on synthetic 
GEGL\npatterns instead of\nvideo footage\nto be to minimie size\nfor inclusion in gcut sources\nbeing able to 
create this project \nfrom scratch in the gcut ui\nis a current goal.' size=0.071811296045780182rel 
color='rgb(1.0000, 1.0000, 1.0000)' width=3 height=1 gegl:translate opi=0:0 x=0.10000000000000001rel 
y=0.051874876022338867rel ]
 gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 reset-origin=true 0s 3.2000000000000002s -- 
svg:src-over opi=0:0 aux=[  gegl:text opi=0:0 string='gcut' font='sans' size=0.20000000000000001rel 
color='rgb(1.0000, 1.0000, 1.0000)' width=1 height=1 gegl:gaussian-blur opi=0:0 std-dev-x={  
0.000000=0.400000rel  2.560000=0.000084rel  }  std-dev-y={  0.000000=0.200000rel  }  clip-extent=false 
gegl:translate opi=0:0 x=0.10000000000000001rel y=0.3304142951965332rel ]  gegl:lens-flare opi=0:0 pos-x={  
0.000000=-2.000000  2.400000=0.293004  4.000000=2.000000  }  pos-y={  0.000000=0.100000  2.400000=0.360697  
25.000000=0.910000  }
diff --git a/gcut/default.edl.inc b/gcut/default.edl.inc
index 79050ce..383aa59 100644
--- a/gcut/default.edl.inc
+++ b/gcut/default.edl.inc
@@ -4,13 +4,13 @@
 "video-width=800\n"
 "video-height=600\n"
 "fps=25\n"
-"selection-start=34.904827117919922\n"
-"selection-end=34.920000000000002\n"
+"selection-start=18.624811172485352\n"
+"selection-end=18.640000000000001\n"
 "frame-scale=0.058649999999999994\n"
 "t0=0\n"
-"frame-pos=22.079999999999998\n"
+"frame-pos=18.640000000000001\n"
 "\n"
-"-- 21s 23s gegl:pixelize opi=0:0 svg:dst-over opi=0:0 aux=[  gegl:text opi=0:0 string='Hfdel lo' 
size=0.10000000000000001rel color='rgb(1.0000, 1.0000, 1.0000)' ]  \n"
+"-- 21s 23s gegl:pixelize opi=0:0 svg:dst-over opi=0:0 \n"
 "gegl:color value=black gegl:crop width=400 height=400 1.24s 2s -- \n"
 "gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 0s 2s -- [fade=1.04s] svg:src-over opi=0:0 aux=[  
gegl:text opi=0:0 string='note: this is a gcut video\\nproject for testing features\\nit relies on synthetic 
GEGL\\npatterns instead of\\nvideo footage\\nto be to minimie size\\nfor inclusion in gcut sources\\nbeing 
able to create this project \\nfrom scratch in the gcut ui\\nis a current goal.' size=0.071811296045780182rel 
color='rgb(1.0000, 1.0000, 1.0000)' width=3 height=1 gegl:translate opi=0:0 x=0.10000000000000001rel 
y=0.051874876022338867rel ]\n"
 "gegl:color opi=0:0 gegl:crop opi=0:0 width=400 height=400 reset-origin=true 0s 3.2000000000000002s -- 
svg:src-over opi=0:0 aux=[  gegl:text opi=0:0 string='gcut' font='sans' size=0.20000000000000001rel 
color='rgb(1.0000, 1.0000, 1.0000)' width=1 height=1 gegl:gaussian-blur opi=0:0 std-dev-x={  
0.000000=0.400000rel  2.560000=0.000084rel  }  std-dev-y={  0.000000=0.200000rel  }  clip-extent=false 
gegl:translate opi=0:0 x=0.10000000000000001rel y=0.3304142951965332rel ]  gegl:lens-flare opi=0:0 pos-x={  
0.000000=-2.000000  2.400000=0.293004  4.000000=2.000000  }  pos-y={  0.000000=0.100000  2.400000=0.360697  
25.000000=0.910000  }\n"
diff --git a/gegl/operation/gegl-operation-filter.c b/gegl/operation/gegl-operation-filter.c
index 34198d9..24a2516 100644
--- a/gegl/operation/gegl-operation-filter.c
+++ b/gegl/operation/gegl-operation-filter.c
@@ -173,6 +173,8 @@ gegl_operation_filter_process (GeglOperation        *operation,
     ThreadData thread_data[GEGL_MAX_THREADS];
     gint pending = threads;
 
+    g_warning ("threading: %s\n", gegl_operation_get_name (operation));
+
     if (klass->get_split_strategy)
     {
       split_strategy = klass->get_split_strategy (operation, context,
diff --git a/gegl/operation/gegl-operation-point-filter.c b/gegl/operation/gegl-operation-point-filter.c
index 18118bc..9cd697e 100644
--- a/gegl/operation/gegl-operation-point-filter.c
+++ b/gegl/operation/gegl-operation-point-filter.c
@@ -266,6 +266,8 @@ gegl_operation_point_filter_init (GeglOperationPointFilter *self)
 
 }
 
+#include <stdlib.h>
+
 static gboolean
 gegl_operation_point_filter_process (GeglOperation       *operation,
                                        GeglBuffer          *input,
diff --git a/operations/common/copy-buffer.c b/operations/common/copy-buffer.c
index c10c6b0..d09e03a 100644
--- a/operations/common/copy-buffer.c
+++ b/operations/common/copy-buffer.c
@@ -145,6 +145,7 @@ gegl_op_class_init (GeglOpClass *klass)
 
   operation_class->prepare  = prepare;
   operation_class->no_cache = TRUE;
+  operation_class->threaded = FALSE;
   filter_class->process     = process;
 
   gegl_operation_class_set_keys (operation_class,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]