E_Object_Delfn *dfn; // delete function handle for objects being tracked
Ecore_X_Sync_Counter counter; // sync counter for syncronised drawing
Ecore_Timer *update_timeout; // max time between damage and "done" event
+ int dmg_updates; // num of damage event updates since a redirect
Eina_List *effects; // list of effects attached to this window currently
else
cw->update = 1;
}
+ if ((!cw->update) && (cw->visible) && (cw->dmg_updates > 0))
+ {
+ if (!evas_object_visible_get(cw->obj))
+ {
+ evas_object_show(cw->obj);
+ if (cw->shobj) evas_object_show(cw->shobj);
+ }
+ }
if (cw->shobj)
{
if (cw->shaped) evas_object_hide(cw->shobj);
{
cw->redirected = 1;
ecore_x_composite_redirect_window(cw->win, ECORE_X_COMPOSITE_UPDATE_MANUAL);
+ cw->dmg_updates = 0;
}
DBG(" [0x%x] add\n", cw->win);
return cw;
cw->pixmap = 0;
}
cw->redirected = 1;
+ cw->dmg_updates = 0;
}
- evas_object_show(cw->obj);
if (cw->shobj)
{
if (_comp_mod->conf->use_shadow)
int ok = 0;
char buf[PATH_MAX];
- // fimxe: make shadow object configurable - use theme first
+ // fimxe: make shadow object configurable - use theme first
if (_comp_mod->conf->shadow_file)
{
ok = 1;
);
edje_object_file_set(cw->shobj, buf, "shadow");
}
- evas_object_show(cw->shobj);
}
}
}
+ if (cw->dmg_updates > 0)
+ {
+ evas_object_show(cw->obj);
+ if (cw->shobj) evas_object_show(cw->shobj);
+ }
_e_mod_comp_win_render_queue(cw);
_e_mod_comp_win_show_effects_add(cw);
}
ecore_x_pixmap_free(cw->pixmap);
cw->pixmap = 0;
}
+ cw->dmg_updates = 0;
}
return;
}
parts = ecore_x_region_new(NULL, 0);
ecore_x_damage_subtract(cw->damage, 0, parts);
ecore_x_region_free(parts);
+ cw->dmg_updates++;
}
e_mod_comp_update_add(cw->up, x, y, w, h);
if (dmg)