[Gegl-developer] GEGL testbed

Fredrik Alstromer roe at chs.chalmers.se
Sat Jun 17 09:14:07 PDT 2006


Øyvind Kolås wrote:
> GEGL has started working locally lately, and the time has come that
> others can join use or more easily help develop GEGL. I have put a
> tarball containing my GEGL development sandbox with md5 based checksums
> on PNGSs to detect regressions in tests.
> 
> The sandbox contains test cases, small example programs and a set of
> base ops (png/jpg load, png save, porter duff compositing, math ops,
> scaling, a box blur and some more.
> 
> To use the sandbox you will need recent(?) glib, libpng, libjpg and 
> SDL (for a test case that displays an animation), as well as CVS
> checkouts of the gegl and babl modules from GNOME CVS.
> 
> http://pippin.gimp.org/gegl/gegl-demo.tgz
> 
> /Øyvind K.
> 

Awesome! I've synched the gegl-source several times in repeated attempts 
to be able to "put a rocket" under gegl as someone phrased it a while 
back. However, every time I was unable to get enough of an overview to 
actually look deeper. This was just what I needed. :)

Some of them end up in segfaults (which is ok, gives you a starting 
point to work on, right?). I ended up examining the clones.c, which uses 
an xml-parser to define the graph. It segfaults when in the call to 
gegl_node_apply/gegl_eval_mgr_apply, as the gegl_node_get_pad returns null.

pad = gegl_node_get_pad (root, pad_name); /* returns NULL */

if (pad->node != root) /* segfault */
     root = pad->node;

In an attempt to figure out how the stuff works, I traced through it a 
couple of times, and it appears that the last statement in 
gegl_xml_parse is part of the problem (the "hacky redirect" comment 
being scary enough...) :)

/* hacky redirect */
gegl_node_add_pad (ret, gegl_node_get_pad (pd->root, "output"));

here the gegl_node_get_pad returns NULL as well. The pd->root seems to 
correctly defined (the first <node> in the <tree>, I suppose?). Sure 
enough this triggers an assertion failed, by the way, which I missed the 
first couple of times around (I thought it was just another warning 
related to the "unable to set operation threshold" problem). How do 
these pads get defined? Any hints on what I missed? :)

Thanks,

/ Fredrik.


More information about the Gegl-developer mailing list