discomfitor pushed a commit to branch master.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=ca3a14c059c8c295833f7308f9414b6f183da3c2

commit ca3a14c059c8c295833f7308f9414b6f183da3c2
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Fri Sep 11 13:04:02 2015 -0400

    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;
 }

-- 


Reply via email to