From 5aafae94f171bd47f735fea234219c5217be84f7 Mon Sep 17 00:00:00 2001 From: Cedric BAIL Date: Fri, 3 Apr 2015 16:23:04 +0200 Subject: [PATCH] evas: actually we want the Ector_Renderer, not the Evas_VG_Node. --- src/lib/evas/canvas/evas_vg_private.h | 12 ++++++++---- src/lib/evas/canvas/evas_vg_shape.c | 17 +++++++++-------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/lib/evas/canvas/evas_vg_private.h b/src/lib/evas/canvas/evas_vg_private.h index 80f8fe5e5b..a2b8aa94ee 100644 --- a/src/lib/evas/canvas/evas_vg_private.h +++ b/src/lib/evas/canvas/evas_vg_private.h @@ -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) \ diff --git a/src/lib/evas/canvas/evas_vg_shape.c b/src/lib/evas/canvas/evas_vg_shape.c index 49eac2d951..797712a6a4 100644 --- a/src/lib/evas/canvas/evas_vg_shape.c +++ b/src/lib/evas/canvas/evas_vg_shape.c @@ -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,