Hi, I've been playing around with evas for a while now and I came across this segv when I was playing trying to use evas_object_text_style_set().
I discovered that in evas/src/lib/canvas/evas_object_text.c, the evas_object_text_render() method assumes there's a clipping object when setting the outline/shadow colors. Here's a quick patch to fix the problem. I'm not quite sure whether I understand it, but I don't set clip objects usually, is that required? Cheers, Alastair -- Alastair Tse (liquidx) Python, Bluetooth, PDA, Chinese/JK Package Developer [W] http://dev.gentoo.org/~liquidx/ [EMAIL PROTECTED] [EMAIL PROTECTED]
Index: evas_object_text.c =================================================================== RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/canvas/evas_object_text.c,v retrieving revision 1.50 diff -u -r1.50 evas_object_text.c --- evas_object_text.c 6 Jan 2006 23:05:17 -0000 1.50 +++ evas_object_text.c 14 Jan 2006 01:22:58 -0000 @@ -1243,18 +1243,33 @@ object->sub.col.a); #define COLOR_SET(object, sub, col) \ - ENFN->context_color_set(output, context, \ + if (obj->cur.clipper)\ + ENFN->context_color_set(output, context, \ ((int)object->sub.col.r * ((int)obj->cur.clipper->cur.cache.clip.r + 1)) >> 8, \ ((int)object->sub.col.g * ((int)obj->cur.clipper->cur.cache.clip.g + 1)) >> 8, \ ((int)object->sub.col.b * ((int)obj->cur.clipper->cur.cache.clip.b + 1)) >> 8, \ - ((int)object->sub.col.a * ((int)obj->cur.clipper->cur.cache.clip.a + 1)) >> 8); + ((int)object->sub.col.a * ((int)obj->cur.clipper->cur.cache.clip.a + 1)) >> 8); \ + else\ + ENFN->context_color_set(output, context, \ + object->sub.col.r, \ + object->sub.col.g, \ + object->sub.col.b, \ + object->sub.col.a); #define COLOR_SET_AMUL(object, sub, col, amul) \ - ENFN->context_color_set(output, context, \ + if (obj->cur.clipper) \ + ENFN->context_color_set(output, context, \ ((int)object->sub.col.r * ((int)obj->cur.clipper->cur.cache.clip.r + 1)) >> 8, \ ((int)object->sub.col.g * ((int)obj->cur.clipper->cur.cache.clip.g + 1)) >> 8, \ ((int)object->sub.col.b * ((int)obj->cur.clipper->cur.cache.clip.b + 1)) >> 8, \ - ((((int)object->sub.col.a * ((int)obj->cur.clipper->cur.cache.clip.a + 1)) >> 8) * amul) / 255); + ((((int)object->sub.col.a * ((int)obj->cur.clipper->cur.cache.clip.a + 1)) >> 8) * amul) / 255); \ + else \ + ENFN->context_color_set(output, context, \ + object->sub.col.r, \ + object->sub.col.g, \ + object->sub.col.b, \ + (((int)object->sub.col.a) * amul) / 255); + #define DRAW_TEXT(ox, oy) \ if ((o->engine_data) && (o->cur.text)) \