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)) \