discomfitor pushed a commit to branch master.

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

commit ef69fabd47b0dfb473c4e08881bea3781d86eb28
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Mon Oct 16 11:51:06 2017 -0400

    add client refs for the nocomp client
    
    this client may be referenced after deletion during render loop
    
    fix T6151
---
 src/bin/e_client.c | 6 +++++-
 src/bin/e_comp.c   | 3 ++-
 2 files changed, 7 insertions(+), 2 deletions(-)

diff --git a/src/bin/e_client.c b/src/bin/e_client.c
index 66e860880..068139bbe 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -4385,7 +4385,11 @@ e_client_fullscreen(E_Client *ec, E_Fullscreen policy)
    ec->need_fullscreen = 1;
    if (ec->new_client) return;
    if (e_comp->nocomp_ec && (ec->desk == e_comp->nocomp_ec->desk))
-     e_comp->nocomp_ec = ec;
+     {
+        e_object_unref(E_OBJECT(e_comp->nocomp_ec));
+        e_object_ref(E_OBJECT(ec));
+        e_comp->nocomp_ec = ec;
+     }
    ec->desk->fullscreen_clients = 
eina_list_append(ec->desk->fullscreen_clients, ec);
    ec->pre_res_change.valid = 0;
 
diff --git a/src/bin/e_comp.c b/src/bin/e_comp.c
index 7f78f0365..650e4a978 100644
--- a/src/bin/e_comp.c
+++ b/src/bin/e_comp.c
@@ -221,6 +221,7 @@ _e_comp_cb_nocomp_begin(void)
 
    ecf = _e_comp_fullscreen_check();
    if (!ecf) return;
+   e_object_ref(E_OBJECT(ecf));
    e_comp->nocomp_ec = ecf;
    E_CLIENT_FOREACH(ec)
      if (ec != ecf) e_client_redirected_set(ec, 0);
@@ -357,7 +358,7 @@ _e_comp_nocomp_end(void)
         evas_object_layer_set(e_comp->nocomp_ec->frame, layer);
         e_comp->nocomp_ec->fullscreen = fs;
      }
-   e_comp->nocomp_ec = NULL;
+   E_FREE_FUNC(e_comp->nocomp_ec, e_object_unref);
 }
 
 static Eina_Bool

-- 


Reply via email to