From ca3a14c059c8c295833f7308f9414b6f183da3c2 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Fri, 11 Sep 2015 13:04:02 -0400 Subject: [PATCH] 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 --- src/bin/e_comp.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c index c5ad76c..380df4e 100644 --- a/src/bin/e_comp.c +++ b/src/bin/e_comp.c @@ -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); - - 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; - } + 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; + 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; } -- 2.7.4