evas: actually we want the Ector_Renderer, not the Evas_VG_Node.
authorCedric BAIL <cedric@osg.samsung.com>
Fri, 3 Apr 2015 14:23:04 +0000 (16:23 +0200)
committerCedric BAIL <cedric@osg.samsung.com>
Fri, 3 Apr 2015 14:23:04 +0000 (16:23 +0200)
src/lib/evas/canvas/evas_vg_private.h
src/lib/evas/canvas/evas_vg_shape.c

index 80f8fe5..a2b8aa9 100644 (file)
@@ -37,14 +37,18 @@ struct _Evas_VG_Gradient_Data
    Efl_Graphics_Gradient_Spread s;
 };
 
-static inline void
+static inline Evas_VG_Node *
 _evas_vg_render_pre(Evas_VG_Node *child, Ector_Surface *s, Eina_Matrix3 *m)
 {
-   Evas_VG_Node_Data *child_nd;
+   Evas_VG_Node_Data *child_nd = NULL;
 
    // FIXME: Prevent infinite loop
-   child_nd = eo_data_scope_get(child, EVAS_VG_NODE_CLASS);
-   child_nd->render_pre(child, m, s, child_nd->data, child_nd);
+   if (child)
+     child_nd = eo_data_scope_get(child, EVAS_VG_NODE_CLASS);
+   if (child_nd)
+     child_nd->render_pre(child, m, s, child_nd->data, child_nd);
+
+   return child_nd;
 }
 
 #define EVAS_VG_COMPUTE_MATRIX(Current, Parent, Nd)              \
index 49eac2d..797712a 100644 (file)
@@ -238,12 +238,13 @@ _evas_vg_shape_render_pre(Eo *obj EINA_UNUSED,
                           Evas_VG_Node_Data *nd)
 {
    Evas_VG_Shape_Data *pd = data;
+   Evas_VG_Node_Data *fill, *stroke_fill, *stroke_marker, *mask;
    EVAS_VG_COMPUTE_MATRIX(current, parent, nd);
 
-   _evas_vg_render_pre(pd->fill, s, current);
-   _evas_vg_render_pre(pd->stroke.fill, s, current);
-   _evas_vg_render_pre(pd->stroke.marker, s, current);
-   _evas_vg_render_pre(nd->mask, s, current);
+   fill = _evas_vg_render_pre(pd->fill, s, current);
+   stroke_fill = _evas_vg_render_pre(pd->stroke.fill, s, current);
+   stroke_marker = _evas_vg_render_pre(pd->stroke.marker, s, current);
+   mask = _evas_vg_render_pre(nd->mask, s, current);
 
    if (!nd->renderer)
      {
@@ -255,10 +256,10 @@ _evas_vg_shape_render_pre(Eo *obj EINA_UNUSED,
          ector_renderer_origin_set(nd->x, nd->y),
          ector_renderer_color_set(nd->r, nd->g, nd->b, nd->a),
          ector_renderer_visibility_set(nd->visibility),
-         ector_renderer_mask_set(nd->mask),
-         ector_renderer_shape_fill_set(pd->fill),
-         ector_renderer_shape_stroke_fill_set(pd->stroke.fill),
-         ector_renderer_shape_stroke_marker_set(pd->stroke.marker),
+         ector_renderer_mask_set(mask->renderer),
+         ector_renderer_shape_fill_set(fill->renderer),
+         ector_renderer_shape_stroke_fill_set(stroke_fill->renderer),
+         ector_renderer_shape_stroke_marker_set(stroke_marker->renderer),
          efl_graphics_shape_stroke_scale_set(pd->stroke.scale),
          efl_graphics_shape_stroke_color_set(pd->stroke.r,
                                              pd->stroke.g,