damnit... the more i use evas the more i optimize it... ok - more
optimizations for special cases (rectangles that onyl change size or location have only their detlas redrawn - not the whole rect, and the same with images who share common global tile start and size parapeters for the image...) this is getting quite fast now :) rememeber you only really see the speedups in software.. hardware is so dispicably fast you never notice :( SVN revision: 4252
This commit is contained in:
parent
2e7ba74abe
commit
d6f9deb7ad
|
@ -398,7 +398,9 @@ evas_render_updates(Evas e)
|
||||||
(o->current.zoomscale != o->previous.zoomscale) ||
|
(o->current.zoomscale != o->previous.zoomscale) ||
|
||||||
(o->current.layer != o->previous.layer) ||
|
(o->current.layer != o->previous.layer) ||
|
||||||
(o->current.stacking))))
|
(o->current.stacking))))
|
||||||
prop_change = 1;
|
{
|
||||||
|
prop_change = 1;
|
||||||
|
}
|
||||||
if ((!prop_change) &&
|
if ((!prop_change) &&
|
||||||
(o->type == OBJECT_RECTANGLE))
|
(o->type == OBJECT_RECTANGLE))
|
||||||
{
|
{
|
||||||
|
@ -407,12 +409,12 @@ evas_render_updates(Evas e)
|
||||||
(oo->current.b != oo->previous.b) ||
|
(oo->current.b != oo->previous.b) ||
|
||||||
(oo->current.a != oo->previous.a)
|
(oo->current.a != oo->previous.a)
|
||||||
)
|
)
|
||||||
prop_change = 1;
|
{
|
||||||
|
prop_change = 1;
|
||||||
|
oo->previous = oo->current;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ((o->type == OBJECT_RECTANGLE) &&
|
if ((o->type == OBJECT_RECTANGLE) &&
|
||||||
(oo->current.r == oo->previous.r) &&
|
|
||||||
(oo->current.g == oo->previous.g) &&
|
|
||||||
(oo->current.b == oo->previous.b) &&
|
|
||||||
(oo->current.a == oo->previous.a) &&
|
(oo->current.a == oo->previous.a) &&
|
||||||
(oo->current.a == 0)
|
(oo->current.a == 0)
|
||||||
)
|
)
|
||||||
|
@ -455,10 +457,7 @@ evas_render_updates(Evas e)
|
||||||
(oo->current.color.a != oo->previous.color.a)
|
(oo->current.color.a != oo->previous.color.a)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if ((oo->current.color.r == oo->previous.color.r) &&
|
if ((oo->current.color.a == oo->previous.color.a) &&
|
||||||
(oo->current.color.g == oo->previous.color.g) &&
|
|
||||||
(oo->current.color.b == oo->previous.color.b) &&
|
|
||||||
(oo->current.color.a == oo->previous.color.a) &&
|
|
||||||
(oo->current.color.a == 0)
|
(oo->current.color.a == 0)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@ -486,10 +485,7 @@ evas_render_updates(Evas e)
|
||||||
(oo->current.a != oo->previous.a)
|
(oo->current.a != oo->previous.a)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if ((oo->current.r == oo->previous.r) &&
|
if ((oo->current.a == oo->previous.a) &&
|
||||||
(oo->current.g == oo->previous.g) &&
|
|
||||||
(oo->current.b == oo->previous.b) &&
|
|
||||||
(oo->current.a == oo->previous.a) &&
|
|
||||||
(oo->current.a == 0)
|
(oo->current.a == 0)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@ -513,10 +509,7 @@ evas_render_updates(Evas e)
|
||||||
(oo->current.a != oo->previous.a)
|
(oo->current.a != oo->previous.a)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if ((oo->current.r == oo->previous.r) &&
|
if ((oo->current.a == oo->previous.a) &&
|
||||||
(oo->current.g == oo->previous.g) &&
|
|
||||||
(oo->current.b == oo->previous.b) &&
|
|
||||||
(oo->current.a == oo->previous.a) &&
|
|
||||||
(oo->current.a == 0)
|
(oo->current.a == 0)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@ -525,7 +518,7 @@ evas_render_updates(Evas e)
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
real_change = 1;
|
real_change = 0;
|
||||||
prop_change = 1;
|
prop_change = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -547,10 +540,7 @@ evas_render_updates(Evas e)
|
||||||
(oo->current.a != oo->previous.a)
|
(oo->current.a != oo->previous.a)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if ((oo->current.r == oo->previous.r) &&
|
if ((oo->current.a == oo->previous.a) &&
|
||||||
(oo->current.g == oo->previous.g) &&
|
|
||||||
(oo->current.b == oo->previous.b) &&
|
|
||||||
(oo->current.a == oo->previous.a) &&
|
|
||||||
(oo->current.a == 0)
|
(oo->current.a == 0)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@ -586,10 +576,7 @@ evas_render_updates(Evas e)
|
||||||
(oo->current.b != oo->previous.b) ||
|
(oo->current.b != oo->previous.b) ||
|
||||||
(oo->current.a != oo->previous.a))
|
(oo->current.a != oo->previous.a))
|
||||||
{
|
{
|
||||||
if ((oo->current.r == oo->previous.r) &&
|
if ((oo->current.a == oo->previous.a) &&
|
||||||
(oo->current.g == oo->previous.g) &&
|
|
||||||
(oo->current.b == oo->previous.b) &&
|
|
||||||
(oo->current.a == oo->previous.a) &&
|
|
||||||
(oo->current.a == 0)
|
(oo->current.a == 0)
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
@ -607,12 +594,30 @@ evas_render_updates(Evas e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (real_change)
|
if ((real_change) || (prop_change))
|
||||||
{
|
{
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
|
int img_tile_ch;
|
||||||
|
|
||||||
|
img_tile_ch = 1;
|
||||||
|
if (o->type == OBJECT_IMAGE)
|
||||||
|
{
|
||||||
|
Evas_Object_Image oo;
|
||||||
|
double fx, fy, fxx, fyy;
|
||||||
|
|
||||||
|
oo = o;
|
||||||
|
fx = oo->current.fill.x + o->current.x;
|
||||||
|
fy = oo->current.fill.y + o->current.y;
|
||||||
|
fxx = oo->previous.fill.x + o->previous.x;
|
||||||
|
fyy = oo->previous.fill.y + o->previous.y;
|
||||||
|
if ((oo->current.fill.w == oo->previous.fill.w) &&
|
||||||
|
(oo->current.fill.h == oo->previous.fill.h) &&
|
||||||
|
(fx == fxx) && (fy == fyy))
|
||||||
|
img_tile_ch = 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* special case for rectangle since its all one color */
|
/* special case for rectangle since its all one color */
|
||||||
if ((o->type == OBJECT_RECTANGLE) &&
|
if (((o->type == OBJECT_RECTANGLE) || (!img_tile_ch)) &&
|
||||||
(!prop_change) &&
|
(!prop_change) &&
|
||||||
(RECTS_INTERSECT(o->current.x, o->current.y,
|
(RECTS_INTERSECT(o->current.x, o->current.y,
|
||||||
o->current.w, o->current.h,
|
o->current.w, o->current.h,
|
||||||
|
|
Loading…
Reference in New Issue