forked from enlightenment/enlightenment
fix issue introduced with shader fixes.
SVN revision: 44997
This commit is contained in:
parent
4ed5747b83
commit
2ade583930
|
@ -60,6 +60,7 @@ struct _Comp_Win
|
||||||
Eina_Bool input_only : 1; // is input_only
|
Eina_Bool input_only : 1; // is input_only
|
||||||
Eina_Bool argb : 1; // is argb
|
Eina_Bool argb : 1; // is argb
|
||||||
Eina_Bool update : 1; // has updates to fetch
|
Eina_Bool update : 1; // has updates to fetch
|
||||||
|
Eina_Bool redirected : 1; // has updates to fetch
|
||||||
};
|
};
|
||||||
|
|
||||||
static Eina_List *handlers = NULL;
|
static Eina_List *handlers = NULL;
|
||||||
|
@ -389,6 +390,10 @@ _e_mod_comp_win_del(Comp_Win *cw)
|
||||||
{
|
{
|
||||||
_e_mod_comp_update_free(cw->up);
|
_e_mod_comp_update_free(cw->up);
|
||||||
// printf(" [0x%x] del\n", cw->win);
|
// printf(" [0x%x] del\n", cw->win);
|
||||||
|
if (cw->pixmap)
|
||||||
|
{
|
||||||
|
ecore_x_pixmap_free(cw->pixmap);
|
||||||
|
}
|
||||||
if (cw->update)
|
if (cw->update)
|
||||||
{
|
{
|
||||||
cw->update = 0;
|
cw->update = 0;
|
||||||
|
@ -406,7 +411,12 @@ _e_mod_comp_win_del(Comp_Win *cw)
|
||||||
eina_hash_del(windows, e_util_winid_str_get(cw->win), cw);
|
eina_hash_del(windows, e_util_winid_str_get(cw->win), cw);
|
||||||
if (cw->damage)
|
if (cw->damage)
|
||||||
{
|
{
|
||||||
|
Ecore_X_Region parts;
|
||||||
|
|
||||||
eina_hash_del(damages, e_util_winid_str_get(cw->damage), cw);
|
eina_hash_del(damages, e_util_winid_str_get(cw->damage), cw);
|
||||||
|
parts = ecore_x_region_new(NULL, 0);
|
||||||
|
ecore_x_damage_subtract(cw->damage, 0, parts);
|
||||||
|
ecore_x_region_free(parts);
|
||||||
ecore_x_damage_free(cw->damage);
|
ecore_x_damage_free(cw->damage);
|
||||||
cw->damage = 0;
|
cw->damage = 0;
|
||||||
}
|
}
|
||||||
|
@ -419,10 +429,11 @@ _e_mod_comp_win_show(Comp_Win *cw)
|
||||||
{
|
{
|
||||||
if (cw->visible) return;
|
if (cw->visible) return;
|
||||||
cw->visible = 1;
|
cw->visible = 1;
|
||||||
if (cw->input_only) return;
|
|
||||||
// printf(" [0x%x] sho\n", cw->win);
|
// printf(" [0x%x] sho\n", cw->win);
|
||||||
if (!cw->pixmap)
|
if (cw->input_only) return;
|
||||||
|
if (!cw->redirected)
|
||||||
{
|
{
|
||||||
|
cw->redirected = 1;
|
||||||
ecore_x_composite_redirect_window(cw->win, ECORE_X_COMPOSITE_UPDATE_MANUAL);
|
ecore_x_composite_redirect_window(cw->win, ECORE_X_COMPOSITE_UPDATE_MANUAL);
|
||||||
_e_mod_comp_win_damage(cw, 0, 0, cw->w, cw->h, 0);
|
_e_mod_comp_win_damage(cw, 0, 0, cw->w, cw->h, 0);
|
||||||
}
|
}
|
||||||
|
@ -437,10 +448,11 @@ _e_mod_comp_win_hide(Comp_Win *cw)
|
||||||
cw->visible = 0;
|
cw->visible = 0;
|
||||||
if (cw->input_only) return;
|
if (cw->input_only) return;
|
||||||
// printf(" [0x%x] hid\n", cw->win);
|
// printf(" [0x%x] hid\n", cw->win);
|
||||||
if (cw->pixmap)
|
if (cw->redirected)
|
||||||
{
|
{
|
||||||
ecore_x_pixmap_free(cw->pixmap);
|
|
||||||
ecore_x_composite_unredirect_window(cw->win, ECORE_X_COMPOSITE_UPDATE_MANUAL);
|
ecore_x_composite_unredirect_window(cw->win, ECORE_X_COMPOSITE_UPDATE_MANUAL);
|
||||||
|
cw->redirected = 0;
|
||||||
|
if (cw->pixmap) ecore_x_pixmap_free(cw->pixmap);
|
||||||
cw->pixmap = 0;
|
cw->pixmap = 0;
|
||||||
cw->pw = 0;
|
cw->pw = 0;
|
||||||
cw->ph = 0;
|
cw->ph = 0;
|
||||||
|
@ -617,6 +629,7 @@ _e_mod_comp_reparent(void *data, int type, void *event)
|
||||||
Ecore_X_Event_Window_Reparent *ev = event;
|
Ecore_X_Event_Window_Reparent *ev = event;
|
||||||
Comp_Win *cw = _e_mod_comp_win_find(ev->win);
|
Comp_Win *cw = _e_mod_comp_win_find(ev->win);
|
||||||
if (!cw) return 1;
|
if (!cw) return 1;
|
||||||
|
// printf("== repar [0x%x] to [0x%x]\n", ev->win, ev->parent);
|
||||||
if (ev->parent != cw->c->man->root)
|
if (ev->parent != cw->c->man->root)
|
||||||
_e_mod_comp_win_del(cw);
|
_e_mod_comp_win_del(cw);
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -790,8 +803,6 @@ e_mod_comp_shutdown(void)
|
||||||
{
|
{
|
||||||
Comp_Win *cw;
|
Comp_Win *cw;
|
||||||
|
|
||||||
if (c->render_animator)
|
|
||||||
ecore_animator_del(c->render_animator);
|
|
||||||
ecore_x_screen_is_composited_set(c->man->num, 0);
|
ecore_x_screen_is_composited_set(c->man->num, 0);
|
||||||
while (c->wins)
|
while (c->wins)
|
||||||
{
|
{
|
||||||
|
@ -804,6 +815,7 @@ e_mod_comp_shutdown(void)
|
||||||
// (c->man->root, ECORE_X_COMPOSITE_UPDATE_MANUAL);
|
// (c->man->root, ECORE_X_COMPOSITE_UPDATE_MANUAL);
|
||||||
ecore_x_composite_render_window_disable(c->win);
|
ecore_x_composite_render_window_disable(c->win);
|
||||||
if (c->man->num == 0) e_alert_composite_win = 0;
|
if (c->man->num == 0) e_alert_composite_win = 0;
|
||||||
|
if (c->render_animator) ecore_animator_del(c->render_animator);
|
||||||
free(c);
|
free(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue