ensure that non-fullscreen nocomp clients have their layers re-set

in the case where a window is fullscreen without having the 'fullscreen'
flag set, the previously-used layer must be reapplied upon nocomp end
in order to avoid breaking the compositor
This commit is contained in:
Mike Blumenkrantz 2015-09-11 13:04:02 -04:00
parent 3ba247dafd
commit ca3a14c059
1 changed files with 12 additions and 11 deletions

View File

@ -247,6 +247,8 @@ _e_comp_cb_nocomp_begin(void)
Eina_Bool fs;
fs = e_comp->nocomp_ec->fullscreen;
if (!fs)
e_comp->nocomp_ec->saved.layer = e_comp->nocomp_ec->layer;
e_comp->nocomp_ec->fullscreen = 0;
e_comp->nocomp_ec->layer = E_LAYER_CLIENT_PRIO;
evas_object_layer_set(e_comp->nocomp_ec->frame, E_LAYER_CLIENT_PRIO);
@ -355,18 +357,17 @@ _e_comp_nocomp_end(void)
_e_comp_cb_nocomp_end();
if (e_comp->nocomp_ec)
{
if (e_comp->nocomp_ec->fullscreen)
{
E_Layer layer = MAX(e_comp->nocomp_ec->saved.layer, E_LAYER_CLIENT_NORMAL);
E_Layer layer = MAX(e_comp->nocomp_ec->saved.layer, E_LAYER_CLIENT_NORMAL);
Eina_Bool fs;
if (!e_config->allow_above_fullscreen)
layer = E_LAYER_CLIENT_FULLSCREEN;
else if (e_config->mode.presentation)
layer = E_LAYER_CLIENT_TOP;
e_comp->nocomp_ec->fullscreen = 0;
evas_object_layer_set(e_comp->nocomp_ec->frame, layer);
e_comp->nocomp_ec->fullscreen = 1;
}
if (!e_config->allow_above_fullscreen)
layer = E_LAYER_CLIENT_FULLSCREEN;
else if (e_config->mode.presentation)
layer = E_LAYER_CLIENT_TOP;
fs = e_comp->nocomp_ec->fullscreen;
e_comp->nocomp_ec->fullscreen = 0;
evas_object_layer_set(e_comp->nocomp_ec->frame, layer);
e_comp->nocomp_ec->fullscreen = fs;
}
e_comp->nocomp_ec = NULL;
}