add client refs for the nocomp client

this client may be referenced after deletion during render loop

fix T6151
This commit is contained in:
Mike Blumenkrantz 2017-10-16 11:51:06 -04:00
parent 0fada40917
commit ef69fabd47
2 changed files with 7 additions and 2 deletions

View File

@ -4385,7 +4385,11 @@ e_client_fullscreen(E_Client *ec, E_Fullscreen policy)
ec->need_fullscreen = 1; ec->need_fullscreen = 1;
if (ec->new_client) return; if (ec->new_client) return;
if (e_comp->nocomp_ec && (ec->desk == e_comp->nocomp_ec->desk)) 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->desk->fullscreen_clients = eina_list_append(ec->desk->fullscreen_clients, ec);
ec->pre_res_change.valid = 0; ec->pre_res_change.valid = 0;

View File

@ -221,6 +221,7 @@ _e_comp_cb_nocomp_begin(void)
ecf = _e_comp_fullscreen_check(); ecf = _e_comp_fullscreen_check();
if (!ecf) return; if (!ecf) return;
e_object_ref(E_OBJECT(ecf));
e_comp->nocomp_ec = ecf; e_comp->nocomp_ec = ecf;
E_CLIENT_FOREACH(ec) E_CLIENT_FOREACH(ec)
if (ec != ecf) e_client_redirected_set(ec, 0); 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); evas_object_layer_set(e_comp->nocomp_ec->frame, layer);
e_comp->nocomp_ec->fullscreen = fs; e_comp->nocomp_ec->fullscreen = fs;
} }
e_comp->nocomp_ec = NULL; E_FREE_FUNC(e_comp->nocomp_ec, e_object_unref);
} }
static Eina_Bool static Eina_Bool