ev.timestamp = timestamp;
ev.event_flags = EVAS_EVENT_FLAG_NONE;
- if (copy) copy = eina_list_free(copy);
+ if (copy) eina_list_free(copy);
while (outs)
{
Evas_Object *obj;
_evas_map_util_points_populate(Evas_Map *m, const Evas_Coord x, const Evas_Coord y, const Evas_Coord w, const Evas_Coord h, const Evas_Coord z)
{
Evas_Map_Point *p = m->points;
-
+ int i;
+
p[0].x = x;
p[0].y = y;
p[0].z = z;
p[3].z = z;
p[3].u = 0.0;
p[3].v = h;
-
- p[0].px = p[0].x;
- p[0].py = p[0].y;
- p[1].px = p[1].x;
- p[1].py = p[1].y;
- p[2].px = p[2].x;
- p[2].py = p[2].y;
- p[3].px = p[3].x;
- p[3].py = p[3].y;
+
+ for (i = 0; i < 4; i++)
+ {
+ p[i].px = p[i].x;
+ p[i].py = p[i].y;
+ }
}
/**
for (; p < p_end; p++)
{
- Evas_Coord x, y, xx, yy;
+ double x, y, xx, yy;
- xx = x = p->x - cx;
- yy = y = p->y - cy;
+ x = p->x - cx;
+ y = p->y - cy;
xx = (x * cos(r));
yy = (x * sin(r));
x = xx + (y * cos(r + (M_PI / 2.0)));
y = yy + (y * sin(r + (M_PI / 2.0)));
- p->x = x + cx;
- p->y = y + cy;
- p->px = p->x;
- p->py = p->y;
+ p->px = p->x = x + cx;
+ p->py = p->y = y + cy;
}
}
for (; p < p_end; p++)
{
- Evas_Coord x, y;
+ double x, y;
x = p->x - cx;
y = p->y - cy;
x = (((double)x) * zoomx);
y = (((double)y) * zoomy);
- p->x = x + cx;
- p->y = y + cy;
- p->px = p->x;
- p->py = p->y;
+ p->px = p->x = x + cx;
+ p->py = p->y = y + cy;
}
}
y = yy + (y * sin(rx + M_PI_2));
}
- p->x = x + cx;
- p->y = y + cy;
+ p->px = p->x = x + cx;
+ p->py = p->y = y + cy;
p->z = z + cz;
- p->px = p->x;
- p->py = p->y;
}
}
m->persp.foc = foc;
for (; p < p_end; p++)
{
- Evas_Coord x, y, zz;
+ double x, y, zz;
if (foc > 0)
{
// draw geom +x +y
for (; p < p_end; p++, pt++)
{
- pt->x = (p->x + x) << FP;
- pt->y = (p->y + y) << FP;
- pt->z = (p->z) << FP;
- pt->x3 = p->px << FP;
- pt->y3 = p->py << FP;
+ pt->x = (p->x + (double)x) * FP1;
+ pt->y = (p->y + (double)y) * FP1;
+ pt->z = (p->z) * FP1;
+ pt->fx = p->px;
+ pt->fy = p->py;
+ pt->fz = p->z;
pt->u = p->u * FP1;
pt->v = p->v * FP1;
pt->col = ARGB_JOIN(p->a, p->r, p->g, p->b);
{
Eina_List *l;
Evas_Object *obj2;
-
+ Eina_Bool movch = 0;
+
if (obj->layer->evas->nochange)
{
// printf("nochange %p\n", obj);
// else
// printf("ch %p\n", obj);
obj->layer->evas->changed = 1;
- if (obj->changed) return;
+ if (obj->changed_move)
+ {
+ movch = 1;
+ obj->changed_move = 0;
+ if (!obj->changed_nomove) obj->changed_move_only = 1;
+ if (obj->changed) return;
+ }
+ else
+ {
+ obj->changed_move_only = 0;
+ obj->changed_nomove = 1;
+ if (obj->changed) return;
+ }
// obj->changed = 1;
evas_render_object_recalc(obj);
/* set changed flag on all objects this one clips too */
- EINA_LIST_FOREACH(obj->clip.clipees, l, obj2) evas_object_change(obj2);
+ if (!((movch) && (obj->is_static_clip)))
+ {
+ EINA_LIST_FOREACH(obj->clip.clipees, l, obj2) evas_object_change(obj2);
+ }
if (obj->smart.parent) evas_object_change(obj->smart.parent);
}
obj->cur.geometry.x = x;
obj->cur.geometry.y = y;
//// obj->cur.cache.geometry.validity = 0;
+ obj->changed_move = 1;
evas_object_change(obj);
evas_object_clip_dirty(obj);
obj->doing.in_move--;
* the current char pointed to and decrements ind but ensures it stays in
* the text range.
*/
-#define GET_PREV(text, ind) (((ind) > 0) ? (text[(ind)--]) : (text[ind]))
+#define GET_PREV(text, ind) (text ? (((ind) > 0) ? (text[(ind)--]) : (text[ind])) : 0)
/**
* @internal
* @def GET_NEXT(text, ind)
* the current char pointed to and increments indd but ensures it stays in
* the text range.
*/
-#define GET_NEXT(text, ind) ((text[ind]) ? (text[(ind)++]) : (text[ind]))
+#define GET_NEXT(text, ind) (text ? ((text[ind]) ? (text[(ind)++]) : (text[ind])) : 0)
/*FIXME: document the structs and struct items. */
struct _Evas_Object_Style_Tag
if (w_ret) *w_ret = c->wmax;
if (h_ret) *h_ret = c->hmax;
if ((o->style_pad.l != style_pad_l) || (o->style_pad.r != style_pad_r) ||
- (o->style_pad.t != style_pad_t) || (o->style_pad.b != style_pad_b))
+ (o->style_pad.t != style_pad_t) || (o->style_pad.b != style_pad_b))
{
- Evas_Object_Textblock_Line *lines;
-
- lines = c->par->lines;
c->par->lines = NULL;
o->style_pad.l = style_pad_l;
o->style_pad.r = style_pad_r;
EINA_INLIST_FOREACH(o->paragraphs->lines, ln)
{
Evas_Object_Textblock_Item *it;
- Evas_Object_Textblock_Line *lnn;
- lnn = (Evas_Object_Textblock_Line *)(((Eina_Inlist *)ln)->next);
EINA_INLIST_FOREACH(ln->items, it)
{
if (it->source_node == n)
Evas_Object_Textblock_Node_Text *nnode;
Evas_Object_Textblock *o;
int len;
+ if (!cur) return;
len = eina_ustrbuf_length_get(cur->node->unicode);
- if (!cur) return;
o = (Evas_Object_Textblock *)(cur->obj->object_data);
nnode = _NODE_TEXT(EINA_INLIST_GET(cur->node)->next);
_evas_textblock_nodes_merge(o, cur->node);
{
if (cur->node->format_node)
{
- cur->node = cur->node;
cur->pos = _evas_textblock_node_format_pos_get(node);
-
return EINA_TRUE;
}
}
if (!cur) return;
if (!cur->node) return;
index = eina_ustrbuf_length_get(cur->node->unicode) - 1;
- if (index < 0) index = 0;
cur->pos = index;
}
cur->pos = it->source_pos;
cur->node = it->source_node;
index = eina_unicode_strlen(it->text) - 1;
- if (index < 0) index = 0;
- if (index >= 0) GET_NEXT(it->text, index);
+ GET_NEXT(it->text, index);
cur->pos += index;
}
else if (fi)
cur->node->format_node = n;
}
}
- if (is_visible)
+ if (is_visible && cur->node)
{
eina_ustrbuf_insert_char(cur->node->unicode,
EVAS_TEXTBLOCK_REPLACEMENT_CHAR, cur->pos);
obj->pre_render_done = 0;
//// FIXME: this wipes out changes
obj->changed = 0;
+ obj->changed_move_only = 0;
+ obj->changed_nomove = 0;
+ obj->changed_move = 0;
}
return obj->changed ? EINA_TRUE : EINA_FALSE;
}
+/*
+static void
+unchange(Evas_Object *obj)
+{
+ Evas_Object *obj2;
+
+ if (!obj->changed) return;
+ obj->changed = 0;
+ obj->changed_move_only = 0;
+ obj->changed_nomove = 0;
+ obj->changed_move = 0;
+ EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(obj), obj2)
+ {
+ unchange(obj2);
+ }
+}
+
+static int
+chlist(Evas_Object *obj, int i)
+{
+ Evas_Object *obj2;
+ int j;
+ int ret = 0;
+
+ if (!obj->changed) return 0;
+ for (j = 0; j < i; j++) printf(" ");
+ printf("ch2 %p %s %i [%i %i %ix%i] v %i/%i [r%i] %p\n", obj,
+ obj->type,
+ obj->changed_move_only,
+ obj->cur.geometry.x,
+ obj->cur.geometry.y,
+ obj->cur.geometry.w,
+ obj->cur.geometry.h,
+ obj->cur.visible,
+ obj->prev.visible,
+ obj->restack,
+ obj->clip.clipees);
+ EINA_INLIST_FOREACH(evas_object_smart_members_get_direct(obj), obj2)
+ {
+ if (obj2->changed)
+ ret |= chlist(obj2, i + 1);
+ }
+}
+*/
static Eina_Bool
evas_render_mapped(Evas *e, Evas_Object *obj, void *context, void *surface,
pt = pts;
for (; p < p_end; p++, pt++)
{
- pt->x = (p->x + off_x) << FP;
- pt->y = (p->y + off_y) << FP;
- pt->z = (p->z) << FP;
- pt->x3 = p->px << FP;
- pt->y3 = p->py << FP;
+ pt->x = (p->x + (double)off_x) * FP1;
+ pt->y = (p->y + (double)off_y) * FP1;
+ pt->z = (p->z) * FP1;
+ pt->fx = p->px;
+ pt->fy = p->py;
+ pt->fz = p->z;
pt->u = p->u * FP1;
pt->v = p->v * FP1;
pt->col = ARGB_JOIN(p->a, p->r, p->g, p->b);
!evas_object_was_visible(obj2))
{
obj2->changed = 0;
+ obj2->changed_move_only = 0;
+ obj2->changed_nomove = 0;
+ obj2->changed_move = 0;
continue;
}
if (obj2->changed)
{
- obj2->changed = 0;
+// chlist(obj2, 0);
changed = 1;
+ obj2->changed = 0;
+ obj2->changed_move_only = 0;
+ obj2->changed_nomove = 0;
+ obj2->changed_move = 0;
break;
}
}
+// unchange(obj);
obj->changed = 0;
+ obj->changed_move_only = 0;
+ obj->changed_nomove = 0;
+ obj->changed_move = 0;
}
else
{
if (obj->changed)
{
- obj->changed = 0;
changed = 1;
+ obj->changed = 0;
+ obj->changed_move_only = 0;
+ obj->changed_nomove = 0;
+ obj->changed_move = 0;
}
}
obj->func->render_post(obj);
obj->restack = 0;
obj->changed = 0;
+ obj->changed_move_only = 0;
+ obj->changed_nomove = 0;
+ obj->changed_move = 0;
}
else if ((obj->cur.map != obj->prev.map) ||
(obj->cur.usemap != obj->prev.usemap))
obj->func->render_post(obj);
obj->restack = 0;
obj->changed = 0;
+ obj->changed_move_only = 0;
+ obj->changed_nomove = 0;
+ obj->changed_move = 0;
}
/* moved to other pre-process phase 1
if (obj->delete_me == 2)
}
EAPI Gfx_Func_Convert
-evas_common_convert_func_get(DATA8 *dest, int w, int h, int depth, DATA32 rmask, DATA32 gmask, DATA32 bmask, Convert_Pal_Mode pal_mode, int rotation)
+evas_common_convert_func_get(DATA8 *dest, int w, int h __UNUSED__, int depth, DATA32 rmask, DATA32 gmask, DATA32 bmask, Convert_Pal_Mode pal_mode, int rotation)
{
if ((rmask == 0) && (gmask == 0) && (bmask == 0))
{
return evas_common_convert_rgba_to_8bpp_pal_gray64;
#endif
}
- if (depth == 1)
- {
- }
- if (depth == 4)
- {
- }
}
else
{
return evas_common_convert_rgba_to_8bpp_rgb_111_dith;
#endif
}
- if (depth == 1)
- {
- }
- if (depth == 4)
- {
- }
}
/* no optimised converter for this... no generic one either. NULL */
return NULL;
- h = 0;
- pal_mode = 0;
}
*
* Returns 0 to indicate there is no next char
*/
- int index = *iindex, len, r;
- unsigned char d, d2, d3, d4;
+#if 1
+ int index = *iindex;
+ Eina_Unicode r;
+ unsigned char d;
/* if this char is the null terminator, exit */
- if (!buf[index])
- return 0;
+ if ((d = buf[index++]) == 0) return 0;
+
+ if ((d & 0x80) == 0)
+ { // 1 byte (7bit) - 0xxxxxxx
+ *iindex = index;
+ return d;
+ }
+ if ((d & 0xe0) == 0xc0)
+ { // 2 byte (11bit) - 110xxxxx 10xxxxxx
+ r = (d & 0x1f) << 6;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f);
+ if (!r) return 0;
+ *iindex = index;
+ return r;
+ }
+ if ((d & 0xf0) == 0xe0)
+ { // 3 byte (16bit) - 1110xxxx 10xxxxxx 10xxxxxx
+ r = (d & 0x0f) << 12;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 6;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f);
+ if (!r) return 0;
+ *iindex = index;
+ return r;
+ }
+ if ((d & 0xf8) == 0xf0)
+ { // 4 byte (21bit) - 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
+ r = (d & 0x07) << 18;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 12;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 6;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f);
+ if (!r) return 0;
+ *iindex = index;
+ return r;
+ }
+ if ((d & 0xfc) == 0xf8)
+ { // 5 byte (26bit) - 111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+ r = (d & 0x03) << 24;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 18;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 12;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 6;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f);
+ if (!r) return 0;
+ *iindex = index;
+ return r;
+ }
+ if ((d & 0xfe) == 0xfc)
+ { // 6 byte (31bit) - 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
+ r = (d & 0x01) << 30;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 24;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 18;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 12;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f) << 6;
+ if ((d = buf[index++]) == 0) return 0;
+ r |= (d & 0x3f);
+ if (!r) return 0;
+ *iindex = index;
+ return r;
+ }
+ return 0;
+#else
+ int index = *iindex, r, len;
+ unsigned char d, d2, d3, d4;
+
+ /* if this char is the null terminator, exit */
+ if (!buf[index]) return 0;
d = buf[index++];
{
/* 2 bytes */
d2 = buf[*iindex + 1];
+ if (d2 == 0)
+ {
+ *iindex = *iindex + 1;
+ return 0;
+ }
r = d & 0x1f; /* copy lower 5 */
r <<= 6;
r |= (d2 & 0x3f); /* copy lower 6 */
{
/* 3 bytes */
d2 = buf[*iindex + 1];
+ if (d2 == 0)
+ {
+ *iindex = *iindex + 1;
+ return 0;
+ }
d3 = buf[*iindex + 2];
+ if (d3 == 0)
+ {
+ *iindex = *iindex + 2;
+ return 0;
+ }
r = d & 0x0f; /* copy lower 4 */
r <<= 6;
r |= (d2 & 0x3f);
{
/* 4 bytes */
d2 = buf[*iindex + 1];
+ if (d2 == 0)
+ {
+ *iindex = *iindex + 1;
+ return 0;
+ }
d3 = buf[*iindex + 2];
+ if (d3 == 0)
+ {
+ *iindex = *iindex + 2;
+ return 0;
+ }
d4 = buf[*iindex + 3];
+ if (d4 == 0)
+ {
+ *iindex = *iindex + 3;
+ return 0;
+ }
r = d & 0x0f; /* copy lower 4 */
r <<= 6;
r |= (d2 & 0x3f);
r <<= 6;
r |= (d4 & 0x3f);
}
-
*iindex = index;
return r;
+#endif
}
EAPI Eina_Unicode
min = item & 0xff;
if (!fash->bucket[grp])
fash->bucket[grp] = calloc(1, sizeof(Fash_Int_Map2));
+ EINA_SAFETY_ON_NULL_RETURN(fash->bucket[grp]);
if (!fash->bucket[grp]->bucket[maj])
fash->bucket[grp]->bucket[maj] = calloc(1, sizeof(Fash_Int_Map));
+ EINA_SAFETY_ON_NULL_RETURN(fash->bucket[grp]->bucket[maj]);
fash->bucket[grp]->bucket[maj]->item[min].fint = fint;
fash->bucket[grp]->bucket[maj]->item[min].index = index;
}
min = item & 0xff;
if (!fash->bucket[grp])
fash->bucket[grp] = calloc(1, sizeof(Fash_Glyph_Map2));
+ EINA_SAFETY_ON_NULL_RETURN(fash->bucket[grp]);
if (!fash->bucket[grp]->bucket[maj])
fash->bucket[grp]->bucket[maj] = calloc(1, sizeof(Fash_Glyph_Map));
+ EINA_SAFETY_ON_NULL_RETURN(fash->bucket[grp]->bucket[maj]);
fash->bucket[grp]->bucket[maj]->item[min] = glyph;
}
{
FT_UInt index;
RGBA_Font_Glyph *fg;
- int chr;
int gl;
RGBA_Font_Int *fi;
fi = fn->fonts->data;
- chr = 0;
if (!*text) return 0;
gl = *text;
if (gl == 0) return 0;
FPc t256;
h = (p[e2].y - p[e1].y) >> FP; // height of edge
+ if (h < 1) h = 1;
t = (((y << FP) + (FP1 - 1)) - p[e1].y) >> FP;
x = p[e2].x - p[e1].x;
x = p[e1].x + ((x * t) / h);
#ifdef BUILD_NEON
static void
_op_copy_p_dp_neon(DATA32 *s, DATA8 *m __UNUSED__, DATA32 c __UNUSED__, DATA32 *d, int l) {
- uint32_t *e;
- e = d + l;
-//#ifdef NEON_INSTRINSICS_OK
-#if 0
- // odd this is faster than the below asm... :(
- e -= 15;
- uint32x4_t col1, col2, col3, col4;
- // fill a run of 4x4 (16) pixels with the color
- for (; d < e; d += 16, s += 16) {
- col1 = vld1q_u32(s+0); // OP
- col2 = vld1q_u32(s+4); // OP
- col3 = vld1q_u32(s+8); // OP
- col4 = vld1q_u32(s+12); // OP
- vst1q_u32(d+0, col1); // OP
- vst1q_u32(d+4, col2); // OP
- vst1q_u32(d+8, col3); // OP
- vst1q_u32(d+12, col4); // OP
- }
- e += 15;
-#else
- if ((e - d) >= 16)
+ DATA32 *e;
+// if (((unsigned long)s & 0xf) || ((unsigned long)d & 0xf))
+// {
+ memcpy(d, s, l * sizeof(DATA32));
+// return;
+// }
+/*
+ e = d + l - 23;
+ if (e > d)
{
- DATA32 *d2, *d3, *d4;
- DATA32 *s2, *s3, *s4;
- e -= 31;
- d2 = d + 4;
- d3 = d + 8;
- d4 = d + 12;
- s2 = s + 4;
- s3 = s + 8;
- s4 = s + 12;
+ int dl;
asm volatile (
- ".fpu neon \n\t"
- "asmloop2:\n\t"
- "cmp %[e], %[d]\n\t"
- "vld1.32 {d16-d17}, [%[s]]!\n\t"
- "vld1.32 {d18-d19}, [%[s2]]!\n\t"
- "vld1.32 {d20-d21}, [%[s3]]!\n\t"
- "vld1.32 {d22-d23}, [%[s4]]!\n\t"
- "vst1.32 {d16-d17}, [%[d]]!\n\t"
- "vst1.32 {d18-d19}, [%[d2]]!\n\t"
- "vst1.32 {d20-d21}, [%[d3]]!\n\t"
- "vst1.32 {d22-d23}, [%[d4]]!\n\t"
- "bhi asmloop2\n\t"
+ ".fpu neon \n\t"
+ "asmloop2: \n\t"
+ "cmp %[e], %[d] \n\t" // compare current and end ptr
+ "pld [%[s], #64] \n\t" // preload 64 bytes ahead
+ "pld [%[s], #256] \n\t" // preload 256 bytes ahead
+ "pld [%[s], #320] \n\t" // preload 320 bytes ahead
+ "vld1.64 {d0-d3}, [%[s]]! \n\t" // load 256bits (32 bytes 8 pix)
+ "vld1.64 {d4-d7} , [%[s]]! \n\t" // load 256bits (32 bytes 8 pix)
+ "vld1.64 {d8-d11}, [%[s]]! \n\t" // load 256bits (32 bytes 8 pix)
+ "vst1.64 {d0-d3}, [%[d]]! \n\t" // store 256bits (32 bytes 8 pix)
+ "vst1.64 {d4-d7}, [%[d]]! \n\t" // store 256bits (32 bytes 8 pix)
+ "vst1.64 {d8-d11}, [%[d]]! \n\t" // store 256bits (32 bytes 8 pix)
+ "bhi asmloop2 \n\t"
: // output regs
- : [s] "r" (s), [s2] "r" (s2), [s3] "r" (s3), [s4] "r" (s4), [e] "r" (e), [d] "r" (d), [d2] "r" (d2), [d3] "r" (d3), [d4] "r" (d4) // input
- : "q8", "q9", "q10", "q11", "d16", "d17", "d18", "d19", "d20", "d21", "d22", "d23", "memory" // clobbered
- );
- e += 31;
+ : [s] "r" (s), [e] "r" (e), [d] "r" (d) // input
+ : "q0", "q1", "q2", "q3", "q4", "q5",
+ "d0", "d1", "d2", "d3", "d4", "d5",
+ "d6", "d7", "d8", "d9", "d10", "d11",
+ "memory" // clobbered
+ );
+ e = d + l;
+ dl = l - (l % 24);
+ s = s + dl;
+ d = d + dl;
}
-#endif
- // fixup any leftover pixels in the run
for (; d < e; d++, s++) {
- *d = *s; // OP
+ *d = *s;
}
+ */
}
#define _op_copy_pan_dp_neon _op_copy_p_dp_neon
if (dst_h < 1) dst_h = 1;
src_ptr = src;
- src_ptr2 = src + src_w;
dst_ptr = dst;
for (y = 0; y < dst_h; y++)
{
sxx = (dsxx * cx);
syy = (dsyy * cy);
- sx = sxx >> 16;
sy = syy >> 16;
if (drh == srh)
struct _RGBA_Map_Point
{
FPc x, y; // x, y screenspace
- FPc x3, y3; // x, y 3d space
+ float fx, fy, fz; // x, y, z in floats
+// FPc x3, y3; // x, y 3d space
FPc z; // z in world space. optional
FPc u, v; // u, v in tex coords
DATA32 col; // color at this point
struct _Evas_Map_Point
{
- Evas_Coord x, y, z, px, py;
+ double x, y, z, px, py;
double u, v;
unsigned char r, g, b, a;
};
Eina_Bool parent_cache_valid : 1;
Eina_Bool repeat_events : 1;
Eina_Bool restack : 1;
- Eina_Bool changed : 1;
- Eina_Bool changed_move : 1;
Eina_Bool is_active : 1;
+ Eina_Bool precise_is_inside : 1;
+ Eina_Bool is_static_clip : 1;
Eina_Bool render_pre : 1;
Eina_Bool rect_del : 1;
Eina_Bool in_layer : 1;
Eina_Bool no_propagate : 1;
- Eina_Bool precise_is_inside : 1;
- Eina_Bool is_static_clip : 1;
+ Eina_Bool changed : 1;
+ Eina_Bool changed_move : 1;
+ Eina_Bool changed_move_only : 1;
+ Eina_Bool changed_nomove : 1;
};
struct _Evas_Func_Node
else
{
PUSH_VERTEX(pn,
- (p[points[i]].x3 >> FP) + gc->shared->ax,
- (p[points[i]].y3 >> FP) + gc->shared->ay,
- (p[points[i]].z >> FP)
+ (p[points[i]].fx) + gc->shared->ax,
+ (p[points[i]].fy) + gc->shared->ay,
+ (p[points[i]].fz)
+ (gc->shared->foc - gc->shared->z0));
}
PUSH_TEXUV(pn,
if ((!configs) || (num < 1))
{
ERR("glXChooseFBConfig returned no configs");
+ return NULL;
}
for (i = 0; i < num; i++)
{
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
+#include <unistd.h>
#include <gif_lib.h>
if (len < 3)
{
*error = EVAS_LOAD_ERROR_CORRUPT_FILE;
+ fclose(b->file);
+ b->file = NULL;
return EINA_FALSE;
}
#include <fcntl.h>
#include <sys/stat.h>
#include <sys/mman.h>
+#include <unistd.h>
#ifdef HAVE_EVIL
# include <Evil.h>
unsigned char *seg = MAP_FAILED, *filedata;
struct stat ss;
tga_header *header;
- tga_footer *footer;
- char hasa = 0, footer_present = 0, vinverted = 0, rle = 0;
+ tga_footer *footer, tfooter;
+ char hasa = 0, footer_present = 0, vinverted = 0;
int w = 0, h = 0, bpp;
fd = open(file, O_RDONLY);
header = (tga_header *)filedata;
// no unaligned data accessed, so ok
footer = (tga_footer *)(filedata + (ss.st_size - sizeof(tga_footer)));
- if (!memcmp(footer->signature, TGA_SIGNATURE, sizeof(footer->signature)))
+ memcpy(&tfooter, footer, sizeof(tga_footer));
+ if (!memcmp(tfooter.signature, TGA_SIGNATURE, sizeof(tfooter.signature)))
{
// footer is there and matches. this is a tga file - any problems now
// are a corrupt file
{
case TGA_TYPE_COLOR_RLE:
case TGA_TYPE_GRAY_RLE:
- rle = 1;
+// rle = 1;
break;
case TGA_TYPE_COLOR:
case TGA_TYPE_GRAY:
- rle = 0;
+// rle = 0;
break;
default:
goto close_file;
unsigned char *seg = MAP_FAILED, *filedata;
struct stat ss;
tga_header *header;
- tga_footer *footer;
+ tga_footer *footer, tfooter;
char hasa = 0, footer_present = 0, vinverted = 0, rle = 0;
int w = 0, h = 0, x, y, bpp;
unsigned int *surface, *dataptr;
header = (tga_header *)filedata;
// no unaligned data accessed, so ok
footer = (tga_footer *)(filedata + (ss.st_size - sizeof(tga_footer)));
- if (!memcmp(footer->signature, TGA_SIGNATURE, sizeof(footer->signature)))
+ memcpy(&tfooter, footer, sizeof(tga_footer));
+ if (!memcmp(tfooter.signature, TGA_SIGNATURE, sizeof(tfooter.signature)))
{
// footer is there and matches. this is a tga file - any problems now
// are a corrupt file
bufptr = filedata + header->idLength;
bufend = filedata + datasize;
- dataptr = surface;
-
if (!rle)
{
for (y = 0; y < h; y++)
# include <config.h>
#endif
+#include <sys/types.h>
#include <stdio.h>
+#include <unistd.h>
#include <tiffio.h>
#ifdef HAVE_EVIL