forked from enlightenment/enlightenment
e: fix layout and visibility issue with emotion xv surface.
SVN revision: 64304
This commit is contained in:
parent
dfe911f764
commit
fe17e9caa7
|
@ -99,7 +99,7 @@ struct _E_Comp_Win
|
||||||
Ecore_X_Window_Type primary_type; // fetched for override-redirect windowa
|
Ecore_X_Window_Type primary_type; // fetched for override-redirect windowa
|
||||||
|
|
||||||
unsigned char misses; // number of sync misses
|
unsigned char misses; // number of sync misses
|
||||||
|
|
||||||
Eina_Bool delete_pending : 1; // delete pendig
|
Eina_Bool delete_pending : 1; // delete pendig
|
||||||
Eina_Bool hidden_override : 1; // hidden override
|
Eina_Bool hidden_override : 1; // hidden override
|
||||||
Eina_Bool animating : 1; // it's busy animating - defer hides/dels
|
Eina_Bool animating : 1; // it's busy animating - defer hides/dels
|
||||||
|
@ -161,6 +161,48 @@ static void _e_mod_comp_win_configure(E_Comp_Win *cw,
|
||||||
int h,
|
int h,
|
||||||
int border);
|
int border);
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_mod_comp_child_show(E_Comp_Win *cw)
|
||||||
|
{
|
||||||
|
evas_object_show(cw->shobj);
|
||||||
|
if (cw->bd)
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
E_Border *tmp;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(cw->bd->client.e.state.video_child, l, tmp)
|
||||||
|
{
|
||||||
|
E_Comp_Win *tcw;
|
||||||
|
|
||||||
|
tcw = eina_hash_find(borders, e_util_winid_str_get(tmp->client.win));
|
||||||
|
if (!tcw) continue ;
|
||||||
|
|
||||||
|
evas_object_show(tcw->shobj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_e_mod_comp_child_hide(E_Comp_Win *cw)
|
||||||
|
{
|
||||||
|
evas_object_hide(cw->shobj);
|
||||||
|
if (cw->bd)
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
E_Border *tmp;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(cw->bd->client.e.state.video_child, l, tmp)
|
||||||
|
{
|
||||||
|
E_Comp_Win *tcw;
|
||||||
|
|
||||||
|
tcw = eina_hash_find(borders, e_util_winid_str_get(tmp->client.win));
|
||||||
|
if (!tcw) continue ;
|
||||||
|
|
||||||
|
evas_object_hide(tcw->shobj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
_e_mod_comp_cb_pending_after(void *data __UNUSED__,
|
_e_mod_comp_cb_pending_after(void *data __UNUSED__,
|
||||||
E_Manager *man __UNUSED__,
|
E_Manager *man __UNUSED__,
|
||||||
|
@ -699,7 +741,7 @@ _e_mod_comp_win_update(E_Comp_Win *cw)
|
||||||
{
|
{
|
||||||
if (!cw->hidden_override)
|
if (!cw->hidden_override)
|
||||||
{
|
{
|
||||||
evas_object_show(cw->shobj);
|
_e_mod_comp_child_show(cw);
|
||||||
_e_mod_comp_win_render_queue(cw);
|
_e_mod_comp_win_render_queue(cw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1093,7 +1135,7 @@ nocomp:
|
||||||
// _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);
|
||||||
if (cw->visible)
|
if (cw->visible)
|
||||||
{
|
{
|
||||||
if (!cw->hidden_override) evas_object_show(cw->shobj);
|
if (!cw->hidden_override) _e_mod_comp_child_show(cw);
|
||||||
cw->pending_count++;
|
cw->pending_count++;
|
||||||
e_manager_comp_event_src_visibility_send
|
e_manager_comp_event_src_visibility_send
|
||||||
(cw->c->man, (E_Manager_Comp_Source *)cw,
|
(cw->c->man, (E_Manager_Comp_Source *)cw,
|
||||||
|
@ -2039,7 +2081,7 @@ _e_mod_comp_win_show(E_Comp_Win *cw)
|
||||||
if ((cw->dmg_updates >= 1) && (cw->show_ready))
|
if ((cw->dmg_updates >= 1) && (cw->show_ready))
|
||||||
{
|
{
|
||||||
cw->defer_hide = 0;
|
cw->defer_hide = 0;
|
||||||
if (!cw->hidden_override) evas_object_show(cw->shobj);
|
if (!cw->hidden_override) _e_mod_comp_child_show(cw);
|
||||||
edje_object_signal_emit(cw->shobj, "e,state,visible,on", "e");
|
edje_object_signal_emit(cw->shobj, "e,state,visible,on", "e");
|
||||||
if (!cw->animating)
|
if (!cw->animating)
|
||||||
{
|
{
|
||||||
|
@ -2097,7 +2139,7 @@ _e_mod_comp_win_hide(E_Comp_Win *cw)
|
||||||
}
|
}
|
||||||
cw->defer_hide = 0;
|
cw->defer_hide = 0;
|
||||||
cw->force = 0;
|
cw->force = 0;
|
||||||
evas_object_hide(cw->shobj);
|
_e_mod_comp_child_hide(cw);
|
||||||
|
|
||||||
if (cw->update_timeout)
|
if (cw->update_timeout)
|
||||||
{
|
{
|
||||||
|
@ -2186,6 +2228,22 @@ _e_mod_comp_win_raise_above(E_Comp_Win *cw,
|
||||||
EINA_INLIST_GET(cw),
|
EINA_INLIST_GET(cw),
|
||||||
EINA_INLIST_GET(cw2));
|
EINA_INLIST_GET(cw2));
|
||||||
evas_object_stack_above(cw->shobj, cw2->shobj);
|
evas_object_stack_above(cw->shobj, cw2->shobj);
|
||||||
|
if (cw->bd)
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
E_Border *tmp;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(cw->bd->client.e.state.video_child, l, tmp)
|
||||||
|
{
|
||||||
|
E_Comp_Win *tcw;
|
||||||
|
|
||||||
|
tcw = eina_hash_find(borders, e_util_winid_str_get(tmp->client.win));
|
||||||
|
if (!tcw) continue ;
|
||||||
|
|
||||||
|
evas_object_stack_below(tcw->shobj, cw->shobj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_e_mod_comp_win_render_queue(cw);
|
_e_mod_comp_win_render_queue(cw);
|
||||||
cw->pending_count++;
|
cw->pending_count++;
|
||||||
e_manager_comp_event_src_config_send
|
e_manager_comp_event_src_config_send
|
||||||
|
@ -2201,6 +2259,22 @@ _e_mod_comp_win_raise(E_Comp_Win *cw)
|
||||||
cw->c->wins = eina_inlist_remove(cw->c->wins, EINA_INLIST_GET(cw));
|
cw->c->wins = eina_inlist_remove(cw->c->wins, EINA_INLIST_GET(cw));
|
||||||
cw->c->wins = eina_inlist_append(cw->c->wins, EINA_INLIST_GET(cw));
|
cw->c->wins = eina_inlist_append(cw->c->wins, EINA_INLIST_GET(cw));
|
||||||
evas_object_raise(cw->shobj);
|
evas_object_raise(cw->shobj);
|
||||||
|
if (cw->bd)
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
E_Border *tmp;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(cw->bd->client.e.state.video_child, l, tmp)
|
||||||
|
{
|
||||||
|
E_Comp_Win *tcw;
|
||||||
|
|
||||||
|
tcw = eina_hash_find(borders, e_util_winid_str_get(tmp->client.win));
|
||||||
|
if (!tcw) continue ;
|
||||||
|
|
||||||
|
evas_object_stack_below(tcw->shobj, cw->shobj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_e_mod_comp_win_render_queue(cw);
|
_e_mod_comp_win_render_queue(cw);
|
||||||
cw->pending_count++;
|
cw->pending_count++;
|
||||||
e_manager_comp_event_src_config_send
|
e_manager_comp_event_src_config_send
|
||||||
|
@ -2216,6 +2290,22 @@ _e_mod_comp_win_lower(E_Comp_Win *cw)
|
||||||
cw->c->wins = eina_inlist_remove(cw->c->wins, EINA_INLIST_GET(cw));
|
cw->c->wins = eina_inlist_remove(cw->c->wins, EINA_INLIST_GET(cw));
|
||||||
cw->c->wins = eina_inlist_prepend(cw->c->wins, EINA_INLIST_GET(cw));
|
cw->c->wins = eina_inlist_prepend(cw->c->wins, EINA_INLIST_GET(cw));
|
||||||
evas_object_lower(cw->shobj);
|
evas_object_lower(cw->shobj);
|
||||||
|
if (cw->bd)
|
||||||
|
{
|
||||||
|
Eina_List *l;
|
||||||
|
E_Border *tmp;
|
||||||
|
|
||||||
|
EINA_LIST_FOREACH(cw->bd->client.e.state.video_child, l, tmp)
|
||||||
|
{
|
||||||
|
E_Comp_Win *tcw;
|
||||||
|
|
||||||
|
tcw = eina_hash_find(borders, e_util_winid_str_get(tmp->client.win));
|
||||||
|
if (!tcw) continue ;
|
||||||
|
|
||||||
|
evas_object_stack_below(tcw->shobj, cw->shobj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
_e_mod_comp_win_render_queue(cw);
|
_e_mod_comp_win_render_queue(cw);
|
||||||
cw->pending_count++;
|
cw->pending_count++;
|
||||||
e_manager_comp_event_src_config_send
|
e_manager_comp_event_src_config_send
|
||||||
|
@ -3014,13 +3104,13 @@ _e_mod_comp_src_hidden_set_func(void *data __UNUSED__,
|
||||||
if (cw->visible)
|
if (cw->visible)
|
||||||
{
|
{
|
||||||
if (cw->hidden_override)
|
if (cw->hidden_override)
|
||||||
evas_object_hide(cw->shobj);
|
_e_mod_comp_child_hide(cw);
|
||||||
else if (!cw->bd || cw->bd->visible)
|
else if (!cw->bd || cw->bd->visible)
|
||||||
evas_object_show(cw->shobj);
|
_e_mod_comp_child_show(cw);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (cw->hidden_override) evas_object_hide(cw->shobj);
|
if (cw->hidden_override) _e_mod_comp_child_hide(cw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue