forked from enlightenment/enlightenment
flag comp win geometry updates and call only as necessary
This commit is contained in:
parent
86ea7cf6ef
commit
dde99c089a
|
@ -469,6 +469,11 @@ _e_comp_win_geometry_update(E_Comp_Win *cw)
|
||||||
{
|
{
|
||||||
int x, y, w, h;
|
int x, y, w, h;
|
||||||
|
|
||||||
|
if (cw->update)
|
||||||
|
{
|
||||||
|
cw->geom_update = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
if (cw->bd)
|
if (cw->bd)
|
||||||
x = cw->bd->x, y = cw->bd->y;
|
x = cw->bd->x, y = cw->bd->y;
|
||||||
else if (cw->visible)
|
else if (cw->visible)
|
||||||
|
@ -492,6 +497,7 @@ _e_comp_win_geometry_update(E_Comp_Win *cw)
|
||||||
e_layout_child_move(cw->effect_obj, x, y);
|
e_layout_child_move(cw->effect_obj, x, y);
|
||||||
e_layout_child_resize(cw->effect_obj, w, h);
|
e_layout_child_resize(cw->effect_obj, w, h);
|
||||||
}
|
}
|
||||||
|
cw->geom_update = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -501,12 +507,14 @@ _e_comp_win_update(E_Comp_Win *cw)
|
||||||
Evas_Object *o;
|
Evas_Object *o;
|
||||||
E_Comp_Render_Update_Rect *r;
|
E_Comp_Render_Update_Rect *r;
|
||||||
int i;
|
int i;
|
||||||
|
int pw, ph;
|
||||||
int pshaped = cw->shaped;
|
int pshaped = cw->shaped;
|
||||||
|
|
||||||
DBG("UPDATE [0x%x] pm = %x", cw->win, cw->pixmap);
|
DBG("UPDATE [0x%x] pm = %x", cw->win, cw->pixmap);
|
||||||
if (conf->grab) ecore_x_grab();
|
if (conf->grab) ecore_x_grab();
|
||||||
cw->update = 0;
|
cw->update = 0;
|
||||||
|
|
||||||
|
pw = cw->pw, ph = cw->ph;
|
||||||
if (cw->argb)
|
if (cw->argb)
|
||||||
{
|
{
|
||||||
if (cw->rects)
|
if (cw->rects)
|
||||||
|
@ -574,8 +582,6 @@ _e_comp_win_update(E_Comp_Win *cw)
|
||||||
{
|
{
|
||||||
ecore_x_pixmap_geometry_get(cw->pixmap, NULL, NULL, &(cw->pw), &(cw->ph));
|
ecore_x_pixmap_geometry_get(cw->pixmap, NULL, NULL, &(cw->pw), &(cw->ph));
|
||||||
_e_comp_win_ready_timeout_setup(cw);
|
_e_comp_win_ready_timeout_setup(cw);
|
||||||
if ((cw->pw > 0) && (cw->ph > 0))
|
|
||||||
_e_comp_win_geometry_update(cw);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -641,8 +647,6 @@ _e_comp_win_update(E_Comp_Win *cw)
|
||||||
// evas_object_move(cw->effect_obj, cw->x, cw->y);
|
// evas_object_move(cw->effect_obj, cw->x, cw->y);
|
||||||
// was cw->w / cw->h
|
// was cw->w / cw->h
|
||||||
// evas_object_resize(cw->effect_obj, cw->pw, cw->ph);
|
// evas_object_resize(cw->effect_obj, cw->pw, cw->ph);
|
||||||
_e_comp_win_geometry_update(cw);
|
|
||||||
|
|
||||||
if ((cw->c->gl) && (conf->texture_from_pixmap) &&
|
if ((cw->c->gl) && (conf->texture_from_pixmap) &&
|
||||||
(!cw->shaped) && (!cw->rects) && (cw->pixmap))
|
(!cw->shaped) && (!cw->rects) && (cw->pixmap))
|
||||||
{
|
{
|
||||||
|
@ -869,6 +873,7 @@ _e_comp_win_update(E_Comp_Win *cw)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (cw->geom_update || (cw->pw != pw) || (cw->ph != ph)) _e_comp_win_geometry_update(cw);
|
||||||
if ((cw->shobj) && (cw->obj))
|
if ((cw->shobj) && (cw->obj))
|
||||||
{
|
{
|
||||||
if (pshaped != cw->shaped)
|
if (pshaped != cw->shaped)
|
||||||
|
|
|
@ -184,6 +184,7 @@ struct _E_Comp_Win
|
||||||
Eina_Bool real_hid : 1; // last hide was a real window unmap
|
Eina_Bool real_hid : 1; // last hide was a real window unmap
|
||||||
Eina_Bool inhash : 1; // is in the windows hash
|
Eina_Bool inhash : 1; // is in the windows hash
|
||||||
Eina_Bool show_ready : 1; // is this window ready for its first show
|
Eina_Bool show_ready : 1; // is this window ready for its first show
|
||||||
|
Eina_Bool geom_update : 1; // window needs geometry updated
|
||||||
|
|
||||||
Eina_Bool show_anim : 1; // ran show animation
|
Eina_Bool show_anim : 1; // ran show animation
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue