ensure that non-fullscreen nocomp clients have their layers re-set
authorMike Blumenkrantz <zmike@osg.samsung.com>
Fri, 11 Sep 2015 17:04:02 +0000 (13:04 -0400)
committerMike Blumenkrantz <zmike@osg.samsung.com>
Fri, 11 Sep 2015 17:06:12 +0000 (13:06 -0400)
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

index c5ad76c..380df4e 100644 (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);
-
-             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;
 }