discomfitor pushed a commit to branch enlightenment-0.21.

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

commit 01de5c785fde89a46219f5cdc06f54a6bb10fe52
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 32881e1b6..328bc333e 100644
--- a/src/bin/e_client.c
+++ b/src/bin/e_client.c
@@ -4049,7 +4049,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 85dd68782..4125ec696 100644
--- a/src/bin/e_comp.c
+++ b/src/bin/e_comp.c
@@ -220,6 +220,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);
@@ -356,7 +357,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