a few things.
1. disable viewports other than 1:1 at 0,0 2. remove output space coorsds for pointer. 3. remove geom caching 4. make threaded pipelined engine a runtime detect if u have > 1 cpu. 5. pthread build default if u have pthread.h and sched.h SVN revision: 27131
This commit is contained in:
parent
ccc60306a0
commit
f80a02f999
|
@ -989,6 +989,15 @@ AM_CONDITIONAL(BUILD_LOADER_SVG, test x$have_svg = xyes)
|
|||
pthread_cflags=""
|
||||
pthread_libs=""
|
||||
build_pthreads="no"
|
||||
AC_CHECK_HEADER(pthread.h,
|
||||
[
|
||||
AC_CHECK_HEADER(sched.h,
|
||||
[ build_pthreads="yes" ],
|
||||
[ build_pthreads="no" ]
|
||||
)
|
||||
],
|
||||
[ build_pthreads="no" ]
|
||||
)
|
||||
AC_MSG_CHECKING(whether to build pthread code)
|
||||
AC_ARG_ENABLE(pthreads,
|
||||
[ --enable-pthreads enable threaded rendering], [
|
||||
|
|
|
@ -9,8 +9,10 @@ evas_object_clip_recalc(Evas_Object *obj)
|
|||
|
||||
if (obj->layer->evas->events_frozen > 0) return;
|
||||
evas_object_coords_recalc(obj);
|
||||
cx = obj->cur.cache.geometry.x; cy = obj->cur.cache.geometry.y;
|
||||
cw = obj->cur.cache.geometry.w; ch = obj->cur.cache.geometry.h;
|
||||
cx = obj->cur.geometry.x; cy = obj->cur.geometry.y;
|
||||
cw = obj->cur.geometry.w; ch = obj->cur.geometry.h;
|
||||
//// cx = obj->cur.cache.geometry.x; cy = obj->cur.cache.geometry.y;
|
||||
//// cw = obj->cur.cache.geometry.w; ch = obj->cur.cache.geometry.h;
|
||||
if (obj->cur.color.a == 0) cvis = 0;
|
||||
else cvis = obj->cur.visible;
|
||||
cr = obj->cur.color.r; cg = obj->cur.color.g;
|
||||
|
|
|
@ -248,8 +248,10 @@ evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int
|
|||
ev.button = b;
|
||||
ev.output.x = e->pointer.x;
|
||||
ev.output.y = e->pointer.y;
|
||||
ev.canvas.x = e->pointer.canvas_x;
|
||||
ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.canvas.x = e->pointer.x;
|
||||
ev.canvas.y = e->pointer.y;
|
||||
//// ev.canvas.x = e->pointer.canvas_x;
|
||||
//// ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.data = (void *)data;
|
||||
ev.modifiers = &(e->modifiers);
|
||||
ev.locks = &(e->locks);
|
||||
|
@ -298,8 +300,10 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
|
|||
ev.button = b;
|
||||
ev.output.x = e->pointer.x;
|
||||
ev.output.y = e->pointer.y;
|
||||
ev.canvas.x = e->pointer.canvas_x;
|
||||
ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.canvas.x = e->pointer.x;
|
||||
ev.canvas.y = e->pointer.y;
|
||||
//// ev.canvas.x = e->pointer.canvas_x;
|
||||
//// ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.data = (void *)data;
|
||||
ev.modifiers = &(e->modifiers);
|
||||
ev.locks = &(e->locks);
|
||||
|
@ -333,8 +337,10 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
|
|||
ev.buttons = e->pointer.button;
|
||||
ev.output.x = e->pointer.x;
|
||||
ev.output.y = e->pointer.y;
|
||||
ev.canvas.x = e->pointer.canvas_x;
|
||||
ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.canvas.x = e->pointer.x;
|
||||
ev.canvas.y = e->pointer.y;
|
||||
//// ev.canvas.x = e->pointer.canvas_x;
|
||||
//// ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.data = (void *)data;
|
||||
ev.modifiers = &(e->modifiers);
|
||||
ev.locks = &(e->locks);
|
||||
|
@ -360,8 +366,10 @@ evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int t
|
|||
ev.buttons = e->pointer.button;
|
||||
ev.output.x = e->pointer.x;
|
||||
ev.output.y = e->pointer.y;
|
||||
ev.canvas.x = e->pointer.canvas_x;
|
||||
ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.canvas.x = e->pointer.x;
|
||||
ev.canvas.y = e->pointer.y;
|
||||
//// ev.canvas.x = e->pointer.canvas_x;
|
||||
//// ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.data = (void *)data;
|
||||
ev.modifiers = &(e->modifiers);
|
||||
ev.locks = &(e->locks);
|
||||
|
@ -417,8 +425,10 @@ evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestam
|
|||
ev.z = z;
|
||||
ev.output.x = e->pointer.x;
|
||||
ev.output.y = e->pointer.y;
|
||||
ev.canvas.x = e->pointer.canvas_x;
|
||||
ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.canvas.x = e->pointer.x;
|
||||
ev.canvas.y = e->pointer.y;
|
||||
//// ev.canvas.x = e->pointer.canvas_x;
|
||||
//// ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.data = (void *) data;
|
||||
ev.modifiers = &(e->modifiers);
|
||||
ev.locks = &(e->locks);
|
||||
|
@ -441,7 +451,7 @@ EAPI void
|
|||
evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const void *data)
|
||||
{
|
||||
int px, py;
|
||||
Evas_Coord pcx, pcy;
|
||||
//// Evas_Coord pcx, pcy;
|
||||
|
||||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||
return;
|
||||
|
@ -449,16 +459,18 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
|
||||
px = e->pointer.x;
|
||||
py = e->pointer.y;
|
||||
pcx = e->pointer.canvas_x;
|
||||
pcy = e->pointer.canvas_y;
|
||||
//// pcx = e->pointer.canvas_x;
|
||||
//// pcy = e->pointer.canvas_y;
|
||||
|
||||
if (e->events_frozen > 0) return;
|
||||
e->last_timestamp = timestamp;
|
||||
|
||||
e->pointer.x = x;
|
||||
e->pointer.y = y;
|
||||
e->pointer.canvas_x = evas_coord_screen_x_to_world(e, x);
|
||||
e->pointer.canvas_y = evas_coord_screen_y_to_world(e, y);
|
||||
//// e->pointer.canvas_x = x;
|
||||
//// e->pointer.canvas_y = y;
|
||||
//// e->pointer.canvas_x = evas_coord_screen_x_to_world(e, x);
|
||||
//// e->pointer.canvas_y = evas_coord_screen_y_to_world(e, y);
|
||||
if ((!e->pointer.inside) && (e->pointer.mouse_grabbed == 0)) return;
|
||||
/* if our mouse button is grabbed to any objects */
|
||||
if (e->pointer.mouse_grabbed > 0)
|
||||
|
@ -485,12 +497,16 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
ev.buttons = e->pointer.button;
|
||||
ev.cur.output.x = e->pointer.x;
|
||||
ev.cur.output.y = e->pointer.y;
|
||||
ev.cur.canvas.x = e->pointer.canvas_x;
|
||||
ev.cur.canvas.y = e->pointer.canvas_y;
|
||||
ev.cur.canvas.x = e->pointer.x;
|
||||
ev.cur.canvas.y = e->pointer.y;
|
||||
//// ev.cur.canvas.x = e->pointer.canvas_x;
|
||||
//// ev.cur.canvas.y = e->pointer.canvas_y;
|
||||
ev.prev.output.x = px;
|
||||
ev.prev.output.y = py;
|
||||
ev.prev.canvas.x = pcx;
|
||||
ev.prev.canvas.y = pcy;
|
||||
ev.prev.canvas.x = px;
|
||||
ev.prev.canvas.y = py;
|
||||
//// ev.prev.canvas.x = pcx;
|
||||
//// ev.prev.canvas.y = pcy;
|
||||
ev.data = (void *)data;
|
||||
ev.modifiers = &(e->modifiers);
|
||||
ev.locks = &(e->locks);
|
||||
|
@ -519,8 +535,10 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
ev.buttons = e->pointer.button;
|
||||
ev.output.x = e->pointer.x;
|
||||
ev.output.y = e->pointer.y;
|
||||
ev.canvas.x = e->pointer.canvas_x;
|
||||
ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.canvas.x = e->pointer.x;
|
||||
ev.canvas.y = e->pointer.y;
|
||||
//// ev.canvas.x = e->pointer.canvas_x;
|
||||
//// ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.data = (void *)data;
|
||||
ev.modifiers = &(e->modifiers);
|
||||
ev.locks = &(e->locks);
|
||||
|
@ -563,12 +581,16 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
ev.buttons = e->pointer.button;
|
||||
ev.cur.output.x = e->pointer.x;
|
||||
ev.cur.output.y = e->pointer.y;
|
||||
ev.cur.canvas.x = e->pointer.canvas_x;
|
||||
ev.cur.canvas.y = e->pointer.canvas_y;
|
||||
ev.cur.canvas.x = e->pointer.x;
|
||||
ev.cur.canvas.y = e->pointer.y;
|
||||
//// ev.cur.canvas.x = e->pointer.canvas_x;
|
||||
//// ev.cur.canvas.y = e->pointer.canvas_y;
|
||||
ev.prev.output.x = px;
|
||||
ev.prev.output.y = py;
|
||||
ev.prev.canvas.x = pcx;
|
||||
ev.prev.canvas.y = pcy;
|
||||
ev.prev.canvas.x = px;
|
||||
ev.prev.canvas.y = py;
|
||||
//// ev.prev.canvas.x = pcx;
|
||||
//// ev.prev.canvas.y = pcy;
|
||||
ev.data = (void *)data;
|
||||
ev.modifiers = &(e->modifiers);
|
||||
ev.locks = &(e->locks);
|
||||
|
@ -586,8 +608,10 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
ev.buttons = e->pointer.button;
|
||||
ev.output.x = e->pointer.x;
|
||||
ev.output.y = e->pointer.y;
|
||||
ev.canvas.x = e->pointer.canvas_x;
|
||||
ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.canvas.x = e->pointer.x;
|
||||
ev.canvas.y = e->pointer.y;
|
||||
//// ev.canvas.x = e->pointer.canvas_x;
|
||||
//// ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.data = (void *)data;
|
||||
ev.modifiers = &(e->modifiers);
|
||||
ev.locks = &(e->locks);
|
||||
|
@ -612,8 +636,10 @@ evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const
|
|||
ev.buttons = e->pointer.button;
|
||||
ev.output.x = e->pointer.x;
|
||||
ev.output.y = e->pointer.y;
|
||||
ev.canvas.x = e->pointer.canvas_x;
|
||||
ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.canvas.x = e->pointer.x;
|
||||
ev.canvas.y = e->pointer.y;
|
||||
//// ev.canvas.x = e->pointer.canvas_x;
|
||||
//// ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.data = (void *)data;
|
||||
ev.modifiers = &(e->modifiers);
|
||||
ev.locks = &(e->locks);
|
||||
|
@ -667,8 +693,10 @@ evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data)
|
|||
ev.buttons = e->pointer.button;
|
||||
ev.output.x = e->pointer.x;
|
||||
ev.output.y = e->pointer.y;
|
||||
ev.canvas.x = e->pointer.canvas_x;
|
||||
ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.canvas.x = e->pointer.x;
|
||||
ev.canvas.y = e->pointer.y;
|
||||
//// ev.canvas.x = e->pointer.canvas_x;
|
||||
//// ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.data = (void *)data;
|
||||
ev.modifiers = &(e->modifiers);
|
||||
ev.locks = &(e->locks);
|
||||
|
@ -720,8 +748,10 @@ evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
|
|||
ev.buttons = e->pointer.button;
|
||||
ev.output.x = e->pointer.x;
|
||||
ev.output.y = e->pointer.y;
|
||||
ev.canvas.x = e->pointer.canvas_x;
|
||||
ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.canvas.x = e->pointer.x;
|
||||
ev.canvas.y = e->pointer.y;
|
||||
//// ev.canvas.x = e->pointer.canvas_x;
|
||||
//// ev.canvas.y = e->pointer.canvas_y;
|
||||
ev.data = (void *)data;
|
||||
ev.modifiers = &(e->modifiers);
|
||||
ev.locks = &(e->locks);
|
||||
|
|
|
@ -401,6 +401,12 @@ evas_output_viewport_set(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas
|
|||
(w == e->viewport.w) && (h == e->viewport.h)) return;
|
||||
if (w <= 0) return;
|
||||
if (h <= 0) return;
|
||||
if ((x != 0) || (y != 0))
|
||||
{
|
||||
printf("EVAS: compat error. viewport x,y != 0,0 not supported\n");
|
||||
x = 0;
|
||||
y = 0;
|
||||
}
|
||||
e->viewport.x = x;
|
||||
e->viewport.y = y;
|
||||
e->viewport.w = w;
|
||||
|
|
|
@ -888,10 +888,14 @@ evas_object_gradient_render(Evas_Object *obj, void *output, void *context, void
|
|||
{
|
||||
obj->layer->evas->engine.func->gradient_draw(output, context, surface,
|
||||
o->engine_data,
|
||||
obj->cur.cache.geometry.x + x,
|
||||
obj->cur.cache.geometry.y + y,
|
||||
obj->cur.cache.geometry.w,
|
||||
obj->cur.cache.geometry.h);
|
||||
obj->cur.geometry.x + x,
|
||||
obj->cur.geometry.y + y,
|
||||
obj->cur.geometry.w,
|
||||
obj->cur.geometry.h);
|
||||
//// obj->cur.cache.geometry.x + x,
|
||||
//// obj->cur.cache.geometry.y + y,
|
||||
//// obj->cur.cache.geometry.w,
|
||||
//// obj->cur.cache.geometry.h);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1566,7 +1566,8 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
|
|||
if (idh < 1.0) idh = 1.0;
|
||||
if (idx > 0.0) idx -= idw;
|
||||
if (idy > 0.0) idy -= idh;
|
||||
while ((int)idx < obj->cur.cache.geometry.w)
|
||||
while ((int)idx < obj->cur.geometry.w)
|
||||
//// while ((int)idx < obj->cur.cache.geometry.w)
|
||||
{
|
||||
Evas_Coord ydy;
|
||||
int dobreak_w = 0;
|
||||
|
@ -1577,11 +1578,13 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
|
|||
(o->cur.fill.x == 0.0))
|
||||
{
|
||||
dobreak_w = 1;
|
||||
iw = obj->cur.cache.geometry.w;
|
||||
iw = obj->cur.geometry.w;
|
||||
//// iw = obj->cur.cache.geometry.w;
|
||||
}
|
||||
else
|
||||
iw = ((int)(idx + idw)) - ix;
|
||||
while ((int)idy < obj->cur.cache.geometry.h)
|
||||
while ((int)idy < obj->cur.geometry.h)
|
||||
//// while ((int)idy < obj->cur.cache.geometry.h)
|
||||
{
|
||||
int dobreak_h = 0;
|
||||
|
||||
|
@ -1589,7 +1592,8 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
|
|||
if ((o->cur.fill.h == obj->cur.geometry.h) &&
|
||||
(o->cur.fill.y == 0.0))
|
||||
{
|
||||
ih = obj->cur.cache.geometry.h;
|
||||
ih = obj->cur.geometry.h;
|
||||
//// ih = obj->cur.cache.geometry.h;
|
||||
dobreak_h = 1;
|
||||
}
|
||||
else
|
||||
|
@ -1606,8 +1610,10 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
|
|||
0, 0,
|
||||
o->cur.image.w,
|
||||
o->cur.image.h,
|
||||
obj->cur.cache.geometry.x + ix + x,
|
||||
obj->cur.cache.geometry.y + iy + y,
|
||||
obj->cur.geometry.x + ix + x,
|
||||
obj->cur.geometry.y + iy + y,
|
||||
//// obj->cur.cache.geometry.x + ix + x,
|
||||
//// obj->cur.cache.geometry.y + iy + y,
|
||||
iw, ih,
|
||||
o->cur.smooth_scale);
|
||||
else
|
||||
|
@ -1616,8 +1622,10 @@ evas_object_image_render(Evas_Object *obj, void *output, void *context, void *su
|
|||
int bl, br, bt, bb;
|
||||
int imw, imh, ox, oy;
|
||||
|
||||
ox = obj->cur.cache.geometry.x + ix + x;
|
||||
oy = obj->cur.cache.geometry.y + iy + y;
|
||||
ox = obj->cur.geometry.x + ix + x;
|
||||
oy = obj->cur.geometry.y + iy + y;
|
||||
//// ox = obj->cur.cache.geometry.x + ix + x;
|
||||
//// oy = obj->cur.cache.geometry.y + iy + y;
|
||||
imw = o->cur.image.w;
|
||||
imh = o->cur.image.h;
|
||||
bl = o->cur.border.l;
|
||||
|
@ -1819,14 +1827,22 @@ evas_object_image_render_pre(Evas_Object *obj)
|
|||
Evas_Rectangle *r;
|
||||
Evas_List *rl;
|
||||
|
||||
rl = evas_rects_return_difference_rects(obj->cur.cache.geometry.x,
|
||||
obj->cur.cache.geometry.y,
|
||||
obj->cur.cache.geometry.w,
|
||||
obj->cur.cache.geometry.h,
|
||||
obj->prev.cache.geometry.x,
|
||||
obj->prev.cache.geometry.y,
|
||||
obj->prev.cache.geometry.w,
|
||||
obj->prev.cache.geometry.h);
|
||||
rl = evas_rects_return_difference_rects(obj->cur.geometry.x,
|
||||
obj->cur.geometry.y,
|
||||
obj->cur.geometry.w,
|
||||
obj->cur.geometry.h,
|
||||
obj->prev.geometry.x,
|
||||
obj->prev.geometry.y,
|
||||
obj->prev.geometry.w,
|
||||
obj->prev.geometry.h);
|
||||
//// rl = evas_rects_return_difference_rects(obj->cur.cache.geometry.x,
|
||||
//// obj->cur.cache.geometry.y,
|
||||
//// obj->cur.cache.geometry.w,
|
||||
//// obj->cur.cache.geometry.h,
|
||||
//// obj->prev.cache.geometry.x,
|
||||
//// obj->prev.cache.geometry.y,
|
||||
//// obj->prev.cache.geometry.w,
|
||||
//// obj->prev.cache.geometry.h);
|
||||
while (rl)
|
||||
{
|
||||
r = rl->data;
|
||||
|
@ -1876,14 +1892,16 @@ evas_object_image_render_pre(Evas_Object *obj)
|
|||
if (idh < 1) idh = 1;
|
||||
if (idx > 0) idx -= idw;
|
||||
if (idy > 0) idy -= idh;
|
||||
while (idx < obj->cur.cache.geometry.w)
|
||||
while (idx < obj->cur.geometry.w)
|
||||
//// while (idx < obj->cur.cache.geometry.w)
|
||||
{
|
||||
Evas_Coord ydy;
|
||||
|
||||
ydy = idy;
|
||||
x = idx;
|
||||
w = ((int)(idx + idw)) - x;
|
||||
while (idy < obj->cur.cache.geometry.h)
|
||||
while (idy < obj->cur.geometry.h)
|
||||
//// while (idy < obj->cur.cache.geometry.h)
|
||||
{
|
||||
y = idy;
|
||||
h = ((int)(idy + idh)) - y;
|
||||
|
@ -1892,8 +1910,10 @@ evas_object_image_render_pre(Evas_Object *obj)
|
|||
r->y = ((rr->y - 1) * r->h) / o->cur.image.h;
|
||||
r->w = ((rr->w + 2) * r->w) / o->cur.image.w;
|
||||
r->h = ((rr->h + 2) * r->h) / o->cur.image.h;
|
||||
r->x += obj->cur.cache.geometry.x + x;
|
||||
r->y += obj->cur.cache.geometry.y + y;
|
||||
r->x += obj->cur.geometry.x + x;
|
||||
r->y += obj->cur.geometry.y + y;
|
||||
//// r->x += obj->cur.cache.geometry.x + x;
|
||||
//// r->y += obj->cur.cache.geometry.y + y;
|
||||
if (r) updates = evas_list_append(updates, r);
|
||||
idy += h;
|
||||
}
|
||||
|
|
|
@ -142,7 +142,7 @@ evas_object_line_xy_set(Evas_Object *obj, Evas_Coord x1, Evas_Coord y1, Evas_Coo
|
|||
obj->cur.geometry.y = min_y;
|
||||
obj->cur.geometry.w = max_x - min_x + 2.0;
|
||||
obj->cur.geometry.h = max_y - min_y + 2.0;
|
||||
obj->cur.cache.geometry.validity = 0;
|
||||
//// obj->cur.cache.geometry.validity = 0;
|
||||
o->cur.x1 = x1 - min_x;
|
||||
o->cur.y1 = y1 - min_y;
|
||||
o->cur.x2 = x2 - min_x;
|
||||
|
@ -458,10 +458,14 @@ evas_object_line_coords_recalc(Evas_Object *obj)
|
|||
Evas_Object_Line *o;
|
||||
|
||||
o = (Evas_Object_Line *)(obj->object_data);
|
||||
o->cur.cache.x1 = evas_coord_world_x_to_screen(obj->layer->evas, obj->cur.geometry.x + o->cur.x1);
|
||||
o->cur.cache.y1 = evas_coord_world_y_to_screen(obj->layer->evas, obj->cur.geometry.y + o->cur.y1);
|
||||
o->cur.cache.x2 = evas_coord_world_x_to_screen(obj->layer->evas, obj->cur.geometry.x + o->cur.x2);
|
||||
o->cur.cache.y2 = evas_coord_world_y_to_screen(obj->layer->evas, obj->cur.geometry.y + o->cur.y2);
|
||||
o->cur.cache.x1 = obj->cur.geometry.x + o->cur.x1;
|
||||
o->cur.cache.y1 = obj->cur.geometry.y + o->cur.y2;
|
||||
o->cur.cache.x2 = obj->cur.geometry.x + o->cur.x2;
|
||||
o->cur.cache.y2 = obj->cur.geometry.y + o->cur.y2;
|
||||
//// o->cur.cache.x1 = evas_coord_world_x_to_screen(obj->layer->evas, obj->cur.geometry.x + o->cur.x1);
|
||||
//// o->cur.cache.y1 = evas_coord_world_y_to_screen(obj->layer->evas, obj->cur.geometry.y + o->cur.y1);
|
||||
//// o->cur.cache.x2 = evas_coord_world_x_to_screen(obj->layer->evas, obj->cur.geometry.x + o->cur.x2);
|
||||
//// o->cur.cache.y2 = evas_coord_world_y_to_screen(obj->layer->evas, obj->cur.geometry.y + o->cur.y2);
|
||||
o->cur.cache.object.w = obj->cur.geometry.w;
|
||||
o->cur.cache.object.h = obj->cur.geometry.h;
|
||||
}
|
||||
|
|
|
@ -145,10 +145,14 @@ evas_object_render_pre_clipper_change(Evas_List *updates, Evas_Object *obj)
|
|||
}
|
||||
else if (obj->cur.clipper)
|
||||
{
|
||||
rl = evas_rects_return_difference_rects(obj->cur.cache.geometry.x,
|
||||
obj->cur.cache.geometry.y,
|
||||
obj->cur.cache.geometry.w,
|
||||
obj->cur.cache.geometry.h,
|
||||
rl = evas_rects_return_difference_rects(obj->cur.geometry.x,
|
||||
obj->cur.geometry.y,
|
||||
obj->cur.geometry.w,
|
||||
obj->cur.geometry.h,
|
||||
//// rl = evas_rects_return_difference_rects(obj->cur.cache.geometry.x,
|
||||
//// obj->cur.cache.geometry.y,
|
||||
//// obj->cur.cache.geometry.w,
|
||||
//// obj->cur.cache.geometry.h,
|
||||
obj->cur.clipper->cur.cache.clip.x,
|
||||
obj->cur.clipper->cur.cache.clip.y,
|
||||
obj->cur.clipper->cur.cache.clip.w,
|
||||
|
@ -162,10 +166,14 @@ evas_object_render_pre_clipper_change(Evas_List *updates, Evas_Object *obj)
|
|||
}
|
||||
else if (obj->prev.clipper)
|
||||
{
|
||||
rl = evas_rects_return_difference_rects(obj->prev.cache.geometry.x,
|
||||
obj->prev.cache.geometry.y,
|
||||
obj->prev.cache.geometry.w,
|
||||
obj->prev.cache.geometry.h,
|
||||
rl = evas_rects_return_difference_rects(obj->prev.geometry.x,
|
||||
obj->prev.geometry.y,
|
||||
obj->prev.geometry.w,
|
||||
obj->prev.geometry.h,
|
||||
//// rl = evas_rects_return_difference_rects(obj->prev.cache.geometry.x,
|
||||
//// obj->prev.cache.geometry.y,
|
||||
//// obj->prev.cache.geometry.w,
|
||||
//// obj->prev.cache.geometry.h,
|
||||
obj->prev.clipper->prev.cache.clip.x,
|
||||
obj->prev.clipper->prev.cache.clip.y,
|
||||
obj->prev.clipper->prev.cache.clip.w,
|
||||
|
@ -186,16 +194,24 @@ evas_object_render_pre_prev_cur_add(Evas_List *updates, Evas_Object *obj)
|
|||
Evas_Rectangle *r;
|
||||
|
||||
NEW_RECT(r,
|
||||
obj->cur.cache.geometry.x,
|
||||
obj->cur.cache.geometry.y,
|
||||
obj->cur.cache.geometry.w,
|
||||
obj->cur.cache.geometry.h);
|
||||
obj->cur.geometry.x,
|
||||
obj->cur.geometry.y,
|
||||
obj->cur.geometry.w,
|
||||
obj->cur.geometry.h);
|
||||
//// obj->cur.cache.geometry.x,
|
||||
//// obj->cur.cache.geometry.y,
|
||||
//// obj->cur.cache.geometry.w,
|
||||
//// obj->cur.cache.geometry.h);
|
||||
if (r) updates = evas_list_append(updates, r);
|
||||
NEW_RECT(r,
|
||||
obj->prev.cache.geometry.x,
|
||||
obj->prev.cache.geometry.y,
|
||||
obj->prev.cache.geometry.w,
|
||||
obj->prev.cache.geometry.h);
|
||||
obj->prev.geometry.x,
|
||||
obj->prev.geometry.y,
|
||||
obj->prev.geometry.w,
|
||||
obj->prev.geometry.h);
|
||||
//// obj->prev.cache.geometry.x,
|
||||
//// obj->prev.cache.geometry.y,
|
||||
//// obj->prev.cache.geometry.w,
|
||||
//// obj->prev.cache.geometry.h);
|
||||
if (r) updates = evas_list_append(updates, r);
|
||||
return updates;
|
||||
}
|
||||
|
@ -289,20 +305,20 @@ void
|
|||
evas_object_coords_recalc(Evas_Object *obj)
|
||||
{
|
||||
if (obj->smart.smart) return;
|
||||
if (obj->cur.cache.geometry.validity == obj->layer->evas->output_validity)
|
||||
return;
|
||||
obj->cur.cache.geometry.x =
|
||||
evas_coord_world_x_to_screen(obj->layer->evas, obj->cur.geometry.x);
|
||||
obj->cur.cache.geometry.y =
|
||||
evas_coord_world_y_to_screen(obj->layer->evas, obj->cur.geometry.y);
|
||||
obj->cur.cache.geometry.w =
|
||||
evas_coord_world_x_to_screen(obj->layer->evas, obj->cur.geometry.w) -
|
||||
evas_coord_world_x_to_screen(obj->layer->evas, 0);
|
||||
obj->cur.cache.geometry.h =
|
||||
evas_coord_world_y_to_screen(obj->layer->evas, obj->cur.geometry.h) -
|
||||
evas_coord_world_y_to_screen(obj->layer->evas, 0);
|
||||
//// if (obj->cur.cache.geometry.validity == obj->layer->evas->output_validity)
|
||||
//// return;
|
||||
//// obj->cur.cache.geometry.x =
|
||||
//// evas_coord_world_x_to_screen(obj->layer->evas, obj->cur.geometry.x);
|
||||
//// obj->cur.cache.geometry.y =
|
||||
//// evas_coord_world_y_to_screen(obj->layer->evas, obj->cur.geometry.y);
|
||||
//// obj->cur.cache.geometry.w =
|
||||
//// evas_coord_world_x_to_screen(obj->layer->evas, obj->cur.geometry.w) -
|
||||
//// evas_coord_world_x_to_screen(obj->layer->evas, 0);
|
||||
//// obj->cur.cache.geometry.h =
|
||||
//// evas_coord_world_y_to_screen(obj->layer->evas, obj->cur.geometry.h) -
|
||||
//// evas_coord_world_y_to_screen(obj->layer->evas, 0);
|
||||
if (obj->func->coords_recalc) obj->func->coords_recalc(obj);
|
||||
obj->cur.cache.geometry.validity = obj->layer->evas->output_validity;
|
||||
//// obj->cur.cache.geometry.validity = obj->layer->evas->output_validity;
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -501,7 +517,7 @@ evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
|
|||
}
|
||||
obj->cur.geometry.x = x;
|
||||
obj->cur.geometry.y = y;
|
||||
obj->cur.cache.geometry.validity = 0;
|
||||
//// obj->cur.cache.geometry.validity = 0;
|
||||
evas_object_change(obj);
|
||||
evas_object_clip_dirty(obj);
|
||||
if (obj->layer->evas->events_frozen <= 0)
|
||||
|
@ -574,7 +590,7 @@ evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
|
|||
}
|
||||
obj->cur.geometry.w = w;
|
||||
obj->cur.geometry.h = h;
|
||||
obj->cur.cache.geometry.validity = 0;
|
||||
//// obj->cur.cache.geometry.validity = 0;
|
||||
evas_object_change(obj);
|
||||
evas_object_clip_dirty(obj);
|
||||
evas_object_recalc_clippees(obj);
|
||||
|
@ -754,8 +770,8 @@ evas_object_hide(Evas_Object *obj)
|
|||
ev.buttons = obj->layer->evas->pointer.button;
|
||||
ev.output.x = obj->layer->evas->pointer.x;
|
||||
ev.output.y = obj->layer->evas->pointer.y;
|
||||
ev.canvas.x = obj->layer->evas->pointer.canvas_x;
|
||||
ev.canvas.y = obj->layer->evas->pointer.canvas_y;
|
||||
ev.canvas.x = obj->layer->evas->pointer.x;
|
||||
ev.canvas.y = obj->layer->evas->pointer.y;
|
||||
ev.data = NULL;
|
||||
ev.modifiers = &(obj->layer->evas->modifiers);
|
||||
ev.locks = &(obj->layer->evas->locks);
|
||||
|
@ -1009,8 +1025,10 @@ evas_object_top_at_xy_get(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Bool include
|
|||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||
return NULL;
|
||||
MAGIC_CHECK_END();
|
||||
xx = evas_coord_world_x_to_screen(e, x);
|
||||
yy = evas_coord_world_y_to_screen(e, y);
|
||||
xx = x;
|
||||
yy = y;
|
||||
//// xx = evas_coord_world_x_to_screen(e, x);
|
||||
//// yy = evas_coord_world_y_to_screen(e, y);
|
||||
for (l = ((Evas_Object_List *)(e->layers))->last; l; l = l->prev)
|
||||
{
|
||||
Evas_Object_List *l2;
|
||||
|
@ -1043,7 +1061,8 @@ evas_object_top_at_xy_get(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Bool include
|
|||
EAPI Evas_Object *
|
||||
evas_object_top_at_pointer_get(Evas *e)
|
||||
{
|
||||
return evas_object_top_at_xy_get(e, e->pointer.canvas_x, e->pointer.canvas_y, 0, 0);
|
||||
//// return evas_object_top_at_xy_get(e, e->pointer.canvas_x, e->pointer.canvas_y, 0, 0);
|
||||
return evas_object_top_at_xy_get(e, e->pointer.x, e->pointer.y, 1, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1061,10 +1080,14 @@ evas_object_top_in_rectangle_get(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord
|
|||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||
return NULL;
|
||||
MAGIC_CHECK_END();
|
||||
xx = evas_coord_world_x_to_screen(e, x);
|
||||
yy = evas_coord_world_y_to_screen(e, y);
|
||||
ww = evas_coord_world_x_to_screen(e, w);
|
||||
hh = evas_coord_world_y_to_screen(e, h);
|
||||
xx = x;
|
||||
yy = y;
|
||||
ww = w;
|
||||
hh = h;
|
||||
//// xx = evas_coord_world_x_to_screen(e, x);
|
||||
//// yy = evas_coord_world_y_to_screen(e, y);
|
||||
//// ww = evas_coord_world_x_to_screen(e, w);
|
||||
//// hh = evas_coord_world_y_to_screen(e, h);
|
||||
if (ww < 1) ww = 1;
|
||||
if (hh < 1) hh = 1;
|
||||
for (l = ((Evas_Object_List *)(e->layers))->last; l; l = l->prev)
|
||||
|
@ -1106,8 +1129,10 @@ evas_objects_at_xy_get(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Bool include_pa
|
|||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||
return NULL;
|
||||
MAGIC_CHECK_END();
|
||||
xx = evas_coord_world_x_to_screen(e, x);
|
||||
yy = evas_coord_world_y_to_screen(e, y);
|
||||
xx = x;
|
||||
yy = y;
|
||||
//// xx = evas_coord_world_x_to_screen(e, x);
|
||||
//// yy = evas_coord_world_y_to_screen(e, y);
|
||||
for (l = ((Evas_Object_List *)(e->layers))->last; l; l = l->prev)
|
||||
{
|
||||
Evas_Object_List *l2;
|
||||
|
@ -1147,10 +1172,14 @@ evas_objects_in_rectangle_get(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w,
|
|||
MAGIC_CHECK(e, Evas, MAGIC_EVAS);
|
||||
return NULL;
|
||||
MAGIC_CHECK_END();
|
||||
xx = evas_coord_world_x_to_screen(e, x);
|
||||
yy = evas_coord_world_y_to_screen(e, y);
|
||||
ww = evas_coord_world_x_to_screen(e, w);
|
||||
hh = evas_coord_world_y_to_screen(e, h);
|
||||
xx = x;
|
||||
yy = y;
|
||||
ww = w;
|
||||
hh = h;
|
||||
//// xx = evas_coord_world_x_to_screen(e, x);
|
||||
//// yy = evas_coord_world_y_to_screen(e, y);
|
||||
//// ww = evas_coord_world_x_to_screen(e, w);
|
||||
//// hh = evas_coord_world_y_to_screen(e, h);
|
||||
if (ww < 1) ww = 1;
|
||||
if (hh < 1) hh = 1;
|
||||
for (l = ((Evas_Object_List *)(e->layers))->last; l; l = l->prev)
|
||||
|
|
|
@ -141,7 +141,7 @@ evas_object_polygon_point_add(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
|
|||
}
|
||||
o->points = evas_list_append(o->points, p);
|
||||
|
||||
obj->cur.cache.geometry.validity = 0;
|
||||
//// obj->cur.cache.geometry.validity = 0;
|
||||
o->changed = 1;
|
||||
evas_object_change(obj);
|
||||
evas_object_coords_recalc(obj);
|
||||
|
@ -192,7 +192,7 @@ evas_object_polygon_points_clear(Evas_Object *obj)
|
|||
}
|
||||
obj->cur.geometry.w = 0;
|
||||
obj->cur.geometry.h = 0;
|
||||
obj->cur.cache.geometry.validity = 0;
|
||||
//// obj->cur.cache.geometry.validity = 0;
|
||||
o->changed = 1;
|
||||
evas_object_change(obj);
|
||||
evas_object_coords_recalc(obj);
|
||||
|
@ -294,15 +294,15 @@ evas_object_polygon_render(Evas_Object *obj, void *output, void *context, void *
|
|||
for (l = o->points; l; l = l->next)
|
||||
{
|
||||
Evas_Polygon_Point *p;
|
||||
int px, py;
|
||||
//// int px, py;
|
||||
|
||||
p = l->data;
|
||||
px = evas_coord_world_x_to_screen(obj->layer->evas, p->x);
|
||||
py = evas_coord_world_y_to_screen(obj->layer->evas, p->y);
|
||||
//// px = evas_coord_world_x_to_screen(obj->layer->evas, p->x);
|
||||
//// py = evas_coord_world_y_to_screen(obj->layer->evas, p->y);
|
||||
o->engine_data = obj->layer->evas->engine.func->polygon_point_add(obj->layer->evas->engine.data.output,
|
||||
obj->layer->evas->engine.data.context,
|
||||
o->engine_data,
|
||||
px + x, py + y);
|
||||
p->x + x, p->y + y);
|
||||
}
|
||||
if (o->engine_data)
|
||||
obj->layer->evas->engine.func->polygon_draw(output,
|
||||
|
|
|
@ -150,10 +150,14 @@ evas_object_rectangle_render(Evas_Object *obj, void *output, void *context, void
|
|||
obj->layer->evas->engine.func->rectangle_draw(output,
|
||||
context,
|
||||
surface,
|
||||
obj->cur.cache.geometry.x + x,
|
||||
obj->cur.cache.geometry.y + y,
|
||||
obj->cur.cache.geometry.w,
|
||||
obj->cur.cache.geometry.h);
|
||||
obj->cur.geometry.x + x,
|
||||
obj->cur.geometry.y + y,
|
||||
obj->cur.geometry.w,
|
||||
obj->cur.geometry.h);
|
||||
//// obj->cur.cache.geometry.x + x,
|
||||
//// obj->cur.cache.geometry.y + y,
|
||||
//// obj->cur.cache.geometry.w,
|
||||
//// obj->cur.cache.geometry.h);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -224,14 +228,22 @@ evas_object_rectangle_render_pre(Evas_Object *obj)
|
|||
Evas_Rectangle *r;
|
||||
Evas_List *rl;
|
||||
|
||||
rl = evas_rects_return_difference_rects(obj->cur.cache.geometry.x,
|
||||
obj->cur.cache.geometry.y,
|
||||
obj->cur.cache.geometry.w,
|
||||
obj->cur.cache.geometry.h,
|
||||
obj->prev.cache.geometry.x,
|
||||
obj->prev.cache.geometry.y,
|
||||
obj->prev.cache.geometry.w,
|
||||
obj->prev.cache.geometry.h);
|
||||
rl = evas_rects_return_difference_rects(obj->cur.geometry.x,
|
||||
obj->cur.geometry.y,
|
||||
obj->cur.geometry.w,
|
||||
obj->cur.geometry.h,
|
||||
obj->prev.geometry.x,
|
||||
obj->prev.geometry.y,
|
||||
obj->prev.geometry.w,
|
||||
obj->prev.geometry.h);
|
||||
//// rl = evas_rects_return_difference_rects(obj->cur.cache.geometry.x,
|
||||
//// obj->cur.cache.geometry.y,
|
||||
//// obj->cur.cache.geometry.w,
|
||||
//// obj->cur.cache.geometry.h,
|
||||
//// obj->prev.cache.geometry.x,
|
||||
//// obj->prev.cache.geometry.y,
|
||||
//// obj->prev.cache.geometry.w,
|
||||
//// obj->prev.cache.geometry.h);
|
||||
while (rl)
|
||||
{
|
||||
r = rl->data;
|
||||
|
|
|
@ -202,7 +202,7 @@ evas_object_text_font_set(Evas_Object *obj, const char *font, Evas_Font_Size siz
|
|||
o->max_descent = ENFN->font_max_descent_get(ENDT, o->engine_data);
|
||||
obj->cur.geometry.w = w + l + r;
|
||||
obj->cur.geometry.h = o->max_ascent + o->max_descent + t + b;
|
||||
obj->cur.cache.geometry.validity = 0;
|
||||
//// obj->cur.cache.geometry.validity = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -222,7 +222,7 @@ evas_object_text_font_set(Evas_Object *obj, const char *font, Evas_Font_Size siz
|
|||
}
|
||||
obj->cur.geometry.w = 0;
|
||||
obj->cur.geometry.h = o->max_ascent + o->max_descent + t + b;
|
||||
obj->cur.cache.geometry.validity = 0;
|
||||
//// obj->cur.cache.geometry.validity = 0;
|
||||
}
|
||||
o->changed = 1;
|
||||
evas_object_change(obj);
|
||||
|
@ -311,7 +311,7 @@ evas_object_text_text_set(Evas_Object *obj, const char *text)
|
|||
evas_text_style_pad_get(o->cur.style, &l, &r, &t, &b);
|
||||
obj->cur.geometry.w = w + l + r;
|
||||
obj->cur.geometry.h = h + t + b;
|
||||
obj->cur.cache.geometry.validity = 0;
|
||||
//// obj->cur.cache.geometry.validity = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -320,7 +320,7 @@ evas_object_text_text_set(Evas_Object *obj, const char *text)
|
|||
evas_text_style_pad_get(o->cur.style, NULL, NULL, &t, &b);
|
||||
obj->cur.geometry.w = 0;
|
||||
obj->cur.geometry.h = o->max_ascent + o->max_descent + t + b;
|
||||
obj->cur.cache.geometry.validity = 0;
|
||||
//// obj->cur.cache.geometry.validity = 0;
|
||||
}
|
||||
o->changed = 1;
|
||||
evas_object_change(obj);
|
||||
|
@ -1393,16 +1393,32 @@ evas_object_text_render(Evas_Object *obj, void *output, void *context, void *sur
|
|||
context, \
|
||||
surface, \
|
||||
o->engine_data, \
|
||||
obj->cur.cache.geometry.x + x + sl + ox - \
|
||||
obj->cur.geometry.x + x + sl + ox - \
|
||||
ENFN->font_inset_get(ENDT, o->engine_data, o->cur.text), \
|
||||
obj->cur.cache.geometry.y + y + st + oy + \
|
||||
obj->cur.geometry.y + y + st + oy + \
|
||||
(int) \
|
||||
(((o->max_ascent * obj->cur.cache.geometry.h) / obj->cur.geometry.h) - 0.5), \
|
||||
obj->cur.cache.geometry.w, \
|
||||
obj->cur.cache.geometry.h, \
|
||||
(((o->max_ascent * obj->cur.geometry.h) / obj->cur.geometry.h) - 0.5), \
|
||||
obj->cur.geometry.w, \
|
||||
obj->cur.geometry.h, \
|
||||
obj->cur.geometry.w, \
|
||||
obj->cur.geometry.h, \
|
||||
o->cur.text);
|
||||
////#define DRAW_TEXT(ox, oy) \
|
||||
//// if ((o->engine_data) && (o->cur.text)) \
|
||||
//// ENFN->font_draw(output, \
|
||||
//// context, \
|
||||
//// surface, \
|
||||
//// o->engine_data, \
|
||||
//// obj->cur.cache.geometry.x + x + sl + ox - \
|
||||
//// ENFN->font_inset_get(ENDT, o->engine_data, o->cur.text), \
|
||||
//// obj->cur.cache.geometry.y + y + st + oy + \
|
||||
//// (int) \
|
||||
//// (((o->max_ascent * obj->cur.cache.geometry.h) / obj->cur.geometry.h) - 0.5), \
|
||||
//// obj->cur.cache.geometry.w, \
|
||||
//// obj->cur.cache.geometry.h, \
|
||||
//// obj->cur.geometry.w, \
|
||||
//// obj->cur.geometry.h, \
|
||||
//// o->cur.text);
|
||||
/* shadows */
|
||||
if (o->cur.style == EVAS_TEXT_STYLE_SHADOW)
|
||||
{
|
||||
|
@ -1672,7 +1688,7 @@ _evas_object_text_rehint(Evas_Object *obj)
|
|||
evas_text_style_pad_get(o->cur.style, &l, &r, &t, &b);
|
||||
obj->cur.geometry.w = w + l + r;
|
||||
obj->cur.geometry.h = h + t + b;
|
||||
obj->cur.cache.geometry.validity = 0;
|
||||
//// obj->cur.cache.geometry.validity = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1681,7 +1697,7 @@ _evas_object_text_rehint(Evas_Object *obj)
|
|||
evas_text_style_pad_get(o->cur.style, NULL, NULL, &t, &b);
|
||||
obj->cur.geometry.w = 0;
|
||||
obj->cur.geometry.h = o->max_ascent + o->max_descent + t + b;
|
||||
obj->cur.cache.geometry.validity = 0;
|
||||
//// obj->cur.cache.geometry.validity = 0;
|
||||
}
|
||||
o->changed = 1;
|
||||
evas_object_change(obj);
|
||||
|
|
|
@ -4006,10 +4006,14 @@ evas_object_textblock_render(Evas_Object *obj, void *output, void *context, void
|
|||
obj->layer->evas->engine.func->rectangle_draw(output,
|
||||
context,
|
||||
surface,
|
||||
obj->cur.cache.geometry.x + x,
|
||||
obj->cur.cache.geometry.y + y,
|
||||
obj->cur.cache.geometry.w,
|
||||
obj->cur.cache.geometry.h);
|
||||
obj->cur.geometry.x + x,
|
||||
obj->cur.geometry.y + y,
|
||||
obj->cur.geometry.w,
|
||||
obj->cur.geometry.h);
|
||||
//// obj->cur.cache.geometry.x + x,
|
||||
//// obj->cur.cache.geometry.y + y,
|
||||
//// obj->cur.cache.geometry.w,
|
||||
//// obj->cur.cache.geometry.h);
|
||||
#endif
|
||||
#define ITEM_WALK() \
|
||||
for (l = (Evas_Object_List *)o->lines; l; l = l->next) \
|
||||
|
@ -4047,9 +4051,16 @@ evas_object_textblock_render(Evas_Object *obj, void *output, void *context, void
|
|||
(obj->cur.cache.clip.a * it->format->color.col.a * (amul)) / 65025);
|
||||
#define DRAW_TEXT(ox, oy) \
|
||||
if (it->format->font.font) ENFN->font_draw(output, context, surface, it->format->font.font, \
|
||||
obj->cur.cache.geometry.x + ln->x + it->x - it->inset + x + (ox), \
|
||||
obj->cur.cache.geometry.y + ln->y + yoff + y + (oy), \
|
||||
obj->cur.geometry.x + ln->x + it->x - it->inset + x + (ox), \
|
||||
obj->cur.geometry.y + ln->y + yoff + y + (oy), \
|
||||
it->w, it->h, it->w, it->h, it->text);
|
||||
////#define DRAW_TEXT(ox, oy) \
|
||||
//// if (it->format->font.font) ENFN->font_draw(output, context, surface, it->format->font.font, \
|
||||
//// obj->cur.geometry.x + ln->x + it->x - it->inset + x + (ox), \
|
||||
//// obj->cur.geometry.y + ln->y + yoff + y + (oy), \
|
||||
//// obj->cur.cache.geometry.x + ln->x + it->x - it->inset + x + (ox), \
|
||||
//// obj->cur.cache.geometry.y + ln->y + yoff + y + (oy), \
|
||||
//// it->w, it->h, it->w, it->h, it->text);
|
||||
|
||||
pback = 0;
|
||||
/* backing */
|
||||
|
@ -4095,8 +4106,10 @@ evas_object_textblock_render(Evas_Object *obj, void *output, void *context, void
|
|||
ENFN->rectangle_draw(output,
|
||||
context,
|
||||
surface,
|
||||
obj->cur.cache.geometry.x + ln->x + backx + x,
|
||||
obj->cur.cache.geometry.y + ln->y + y,
|
||||
obj->cur.geometry.x + ln->x + backx + x,
|
||||
obj->cur.geometry.y + ln->y + y,
|
||||
//// obj->cur.cache.geometry.x + ln->x + backx + x,
|
||||
//// obj->cur.cache.geometry.y + ln->y + y,
|
||||
x2 - backx,
|
||||
ln->h);
|
||||
}
|
||||
|
@ -4249,8 +4262,10 @@ evas_object_textblock_render(Evas_Object *obj, void *output, void *context, void
|
|||
ENFN->rectangle_draw(output,
|
||||
context,
|
||||
surface,
|
||||
obj->cur.cache.geometry.x + ln->x + strikex + x,
|
||||
obj->cur.cache.geometry.y + ln->y + y + (ln->h / 2),
|
||||
obj->cur.geometry.x + ln->x + strikex + x,
|
||||
obj->cur.geometry.y + ln->y + y + (ln->h / 2),
|
||||
//// obj->cur.cache.geometry.x + ln->x + strikex + x,
|
||||
//// obj->cur.cache.geometry.y + ln->y + y + (ln->h / 2),
|
||||
x2 - strikex,
|
||||
1);
|
||||
}
|
||||
|
@ -4302,8 +4317,10 @@ evas_object_textblock_render(Evas_Object *obj, void *output, void *context, void
|
|||
ENFN->rectangle_draw(output,
|
||||
context,
|
||||
surface,
|
||||
obj->cur.cache.geometry.x + ln->x + linex + x,
|
||||
obj->cur.cache.geometry.y + ln->y + y + ln->baseline + 1,
|
||||
obj->cur.geometry.x + ln->x + linex + x,
|
||||
obj->cur.geometry.y + ln->y + y + ln->baseline + 1,
|
||||
//// obj->cur.cache.geometry.x + ln->x + linex + x,
|
||||
//// obj->cur.cache.geometry.y + ln->y + y + ln->baseline + 1,
|
||||
x2 - linex,
|
||||
1);
|
||||
}
|
||||
|
@ -4355,8 +4372,10 @@ evas_object_textblock_render(Evas_Object *obj, void *output, void *context, void
|
|||
ENFN->rectangle_draw(output,
|
||||
context,
|
||||
surface,
|
||||
obj->cur.cache.geometry.x + ln->x + line2x + x,
|
||||
obj->cur.cache.geometry.y + ln->y + y + ln->baseline + 3,
|
||||
obj->cur.geometry.x + ln->x + line2x + x,
|
||||
obj->cur.geometry.y + ln->y + y + ln->baseline + 3,
|
||||
//// obj->cur.cache.geometry.x + ln->x + line2x + x,
|
||||
//// obj->cur.cache.geometry.y + ln->y + y + ln->baseline + 3,
|
||||
x2 - line2x,
|
||||
1);
|
||||
}
|
||||
|
|
|
@ -238,6 +238,10 @@ evas_render_updates_internal(Evas *e, unsigned char make_updates)
|
|||
0, 0,
|
||||
e->output.w, e->output.h);
|
||||
}
|
||||
if ((e->output.w != e->viewport.w) || (e->output.h != e->viewport.h))
|
||||
{
|
||||
printf("EVAS: error: viewport size != output size!\n");
|
||||
}
|
||||
/* phase 5. add obscures */
|
||||
for (ll = e->obscures; ll; ll = ll->next)
|
||||
{
|
||||
|
|
|
@ -123,12 +123,14 @@ evas_common_pipe_begin(RGBA_Image *im)
|
|||
#ifdef BUILD_PTHREAD
|
||||
int i, y, h;
|
||||
|
||||
if (thread_num == 1) return;
|
||||
if (thread_num == 0)
|
||||
{
|
||||
int cpunum;
|
||||
|
||||
cpunum = evas_common_cpu_count();
|
||||
thread_num = cpunum;
|
||||
if (thread_num == 1) return;
|
||||
pthread_barrier_init(&(thbarrier[0]), NULL, thread_num + 1);
|
||||
for (i = 0; i < thread_num; i++)
|
||||
{
|
||||
|
@ -176,6 +178,7 @@ evas_common_pipe_begin(RGBA_Image *im)
|
|||
/* send startsignal */
|
||||
// printf("START %i\n", i);
|
||||
}
|
||||
/* tell worker threads to start */
|
||||
pthread_barrier_init(&(thbarrier[1]), NULL, thread_num + 1);
|
||||
pthread_barrier_wait(&(thbarrier[0]));
|
||||
pthread_barrier_destroy(&(thbarrier[0]));
|
||||
|
@ -191,26 +194,27 @@ evas_common_pipe_flush(RGBA_Image *im)
|
|||
|
||||
if (!im->pipe) return;
|
||||
#ifdef BUILD_PTHREAD
|
||||
/* FIXME: PTHREAD join all threads here (if not finished) or begin then join
|
||||
* otherwise just process pipe */
|
||||
if (thread_num > 1)
|
||||
{
|
||||
/* sync worker threads */
|
||||
pthread_barrier_init(&(thbarrier[0]), NULL, thread_num + 1);
|
||||
pthread_barrier_wait(&(thbarrier[1]));
|
||||
pthread_barrier_destroy(&(thbarrier[1]));
|
||||
// printf("DONE\n");
|
||||
}
|
||||
|
||||
#else
|
||||
/* process pipe - 1 thead */
|
||||
for (p = im->pipe; p; p = (RGBA_Pipe *)((Evas_Object_List *)p)->next)
|
||||
else
|
||||
#endif
|
||||
{
|
||||
for (i = 0; i < p->op_num; i++)
|
||||
/* process pipe - 1 thead */
|
||||
for (p = im->pipe; p; p = (RGBA_Pipe *)((Evas_Object_List *)p)->next)
|
||||
{
|
||||
if (p->op[i].op_func)
|
||||
p->op[i].op_func(im, &(p->op[i]), NULL);
|
||||
for (i = 0; i < p->op_num; i++)
|
||||
{
|
||||
if (p->op[i].op_func)
|
||||
p->op[i].op_func(im, &(p->op[i]), NULL);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
evas_common_cpu_end_opt();
|
||||
evas_common_pipe_free(im);
|
||||
}
|
||||
|
|
|
@ -275,9 +275,9 @@ struct _Evas
|
|||
unsigned char inside : 1;
|
||||
int mouse_grabbed;
|
||||
DATA32 button;
|
||||
int x, y;
|
||||
Evas_Coord x, y;
|
||||
|
||||
Evas_Coord canvas_x, canvas_y;
|
||||
//// Evas_Coord canvas_x, canvas_y;
|
||||
|
||||
struct {
|
||||
Evas_List *in;
|
||||
|
@ -364,10 +364,12 @@ struct _Evas_Object
|
|||
|
||||
struct {
|
||||
struct {
|
||||
/*
|
||||
struct {
|
||||
int x, y, w, h;
|
||||
int validity;
|
||||
} geometry;
|
||||
*/
|
||||
struct {
|
||||
int x, y, w, h;
|
||||
unsigned char r, g, b, a;
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
*****
|
||||
*/
|
||||
|
||||
static int cpunum = 0;
|
||||
|
||||
static void *
|
||||
eng_context_new(void *data)
|
||||
{
|
||||
|
@ -141,22 +143,28 @@ static void
|
|||
eng_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h)
|
||||
{
|
||||
#ifdef BUILD_PTHREAD
|
||||
evas_common_pipe_rectangle_draw(surface, context, x, y, w, h);
|
||||
#else
|
||||
evas_common_rectangle_draw(surface, context, x, y, w, h);
|
||||
evas_common_cpu_end_opt();
|
||||
#endif
|
||||
if (cpunum > 1)
|
||||
evas_common_pipe_rectangle_draw(surface, context, x, y, w, h);
|
||||
else
|
||||
#endif
|
||||
{
|
||||
evas_common_rectangle_draw(surface, context, x, y, w, h);
|
||||
evas_common_cpu_end_opt();
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
eng_line_draw(void *data, void *context, void *surface, int x1, int y1, int x2, int y2)
|
||||
{
|
||||
#ifdef BUILD_PTHREAD
|
||||
evas_common_pipe_line_draw(surface, context, x1, y1, x2, y2);
|
||||
#else
|
||||
evas_common_line_draw(surface, context, x1, y1, x2, y2);
|
||||
evas_common_cpu_end_opt();
|
||||
if (cpunum > 1)
|
||||
evas_common_pipe_line_draw(surface, context, x1, y1, x2, y2);
|
||||
else
|
||||
#endif
|
||||
{
|
||||
evas_common_line_draw(surface, context, x1, y1, x2, y2);
|
||||
evas_common_cpu_end_opt();
|
||||
}
|
||||
}
|
||||
|
||||
static void *
|
||||
|
@ -175,11 +183,14 @@ static void
|
|||
eng_polygon_draw(void *data, void *context, void *surface, void *polygon)
|
||||
{
|
||||
#ifdef BUILD_PTHREAD
|
||||
evas_common_pipe_poly_draw(surface, context, polygon);
|
||||
#else
|
||||
evas_common_polygon_draw(surface, context, polygon);
|
||||
evas_common_cpu_end_opt();
|
||||
if (cpunum > 1)
|
||||
evas_common_pipe_poly_draw(surface, context, polygon);
|
||||
else
|
||||
#endif
|
||||
{
|
||||
evas_common_polygon_draw(surface, context, polygon);
|
||||
evas_common_cpu_end_opt();
|
||||
}
|
||||
}
|
||||
|
||||
static void *
|
||||
|
@ -308,11 +319,14 @@ static void
|
|||
eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h)
|
||||
{
|
||||
#ifdef BUILD_PTHREAD
|
||||
evas_common_pipe_grad_draw(surface, context, x, y, w, h, gradient);
|
||||
#else
|
||||
evas_common_gradient_draw(surface, context, x, y, w, h, gradient);
|
||||
evas_common_cpu_end_opt();
|
||||
if (cpunum > 1)
|
||||
evas_common_pipe_grad_draw(surface, context, x, y, w, h, gradient);
|
||||
else
|
||||
#endif
|
||||
{
|
||||
evas_common_gradient_draw(surface, context, x, y, w, h, gradient);
|
||||
evas_common_cpu_end_opt();
|
||||
}
|
||||
}
|
||||
|
||||
static void *
|
||||
|
@ -502,20 +516,23 @@ eng_image_draw(void *data, void *context, void *surface, void *image, int src_x,
|
|||
{
|
||||
evas_common_load_image_data_from_file(image);
|
||||
#ifdef BUILD_PTHREAD
|
||||
evas_common_pipe_image_draw(image, surface, context, smooth,
|
||||
src_x, src_y, src_w, src_h,
|
||||
dst_x, dst_y, dst_w, dst_h);
|
||||
#else
|
||||
if (smooth)
|
||||
evas_common_scale_rgba_in_to_out_clip_smooth(image, surface, context,
|
||||
src_x, src_y, src_w, src_h,
|
||||
dst_x, dst_y, dst_w, dst_h);
|
||||
if (cpunum > 1)
|
||||
evas_common_pipe_image_draw(image, surface, context, smooth,
|
||||
src_x, src_y, src_w, src_h,
|
||||
dst_x, dst_y, dst_w, dst_h);
|
||||
else
|
||||
evas_common_scale_rgba_in_to_out_clip_sample(image, surface, context,
|
||||
src_x, src_y, src_w, src_h,
|
||||
dst_x, dst_y, dst_w, dst_h);
|
||||
evas_common_cpu_end_opt();
|
||||
#endif
|
||||
{
|
||||
if (smooth)
|
||||
evas_common_scale_rgba_in_to_out_clip_smooth(image, surface, context,
|
||||
src_x, src_y, src_w, src_h,
|
||||
dst_x, dst_y, dst_w, dst_h);
|
||||
else
|
||||
evas_common_scale_rgba_in_to_out_clip_sample(image, surface, context,
|
||||
src_x, src_y, src_w, src_h,
|
||||
dst_x, dst_y, dst_w, dst_h);
|
||||
evas_common_cpu_end_opt();
|
||||
}
|
||||
}
|
||||
|
||||
static char *
|
||||
|
@ -655,50 +672,14 @@ static void
|
|||
eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const char *text)
|
||||
{
|
||||
#ifdef BUILD_PTHREAD
|
||||
evas_common_pipe_text_draw(surface, context, font, x, y, text);
|
||||
#else
|
||||
evas_common_font_draw(surface, context, font, x, y, text);
|
||||
evas_common_cpu_end_opt();
|
||||
#endif
|
||||
#if 0
|
||||
if (cpunum > 1)
|
||||
evas_common_pipe_text_draw(surface, context, font, x, y, text);
|
||||
else
|
||||
{
|
||||
/* create output surface size ow x oh and scale to w x h */
|
||||
RGBA_Draw_Context *dc, *dc_in;
|
||||
|
||||
dc_in = context;
|
||||
dc = evas_common_draw_context_new();
|
||||
if (dc)
|
||||
{
|
||||
RGBA_Image *im;
|
||||
int inset;
|
||||
|
||||
dc->col.col = dc_in->col.col;
|
||||
inset = evas_common_font_query_inset( font, text);
|
||||
im = evas_common_image_create(ow+inset, oh);
|
||||
if (im)
|
||||
{
|
||||
int max_ascent;
|
||||
int j;
|
||||
|
||||
im->flags |= RGBA_IMAGE_HAS_ALPHA;
|
||||
j = (ow + inset) * oh;
|
||||
memset(im->image->data, 0, j * sizeof(DATA32));
|
||||
|
||||
max_ascent = evas_common_font_max_ascent_get(font);
|
||||
|
||||
evas_common_font_draw(im, dc, font, 0, max_ascent, text);
|
||||
evas_common_cpu_end_opt();
|
||||
evas_common_scale_rgba_in_to_out_clip_smooth
|
||||
(im, surface, context, inset, 0, ow, oh,
|
||||
x + ((inset * w) / ow), y - ((max_ascent * h) / oh),
|
||||
w, h);
|
||||
evas_common_image_free(im);
|
||||
}
|
||||
evas_common_draw_context_free(dc);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
{
|
||||
evas_common_font_draw(surface, context, font, x, y, text);
|
||||
evas_common_cpu_end_opt();
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -863,6 +844,7 @@ module_open(Evas_Module *em)
|
|||
{
|
||||
if (!em) return 0;
|
||||
em->functions = (void *)(&func);
|
||||
cpunum = evas_common_cpu_count();
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue