e_view_data_del(&client->view, "E_Client");
+ if (client->effect)
+ {
+ wl_list_remove(&client->effect_destroy.link);
+ client->effect_destroy.notify = NULL;
+ e_view_destroy(client->effect);
+ free(client->effect);
+ client->effect = NULL;
+ }
+
free(client);
}
+static void
+_view_client_effect_destroy(struct wl_listener *listener, void *data)
+{
+ E_View_Client *client = wl_container_of(listener, client, effect_destroy);
+
+ wl_list_remove(&client->effect_destroy.link);
+ client->effect_destroy.notify = NULL;
+ free(client->effect);
+ client->effect = NULL;
+}
+
static E_View_Client *
_view_client_from_tree(E_View_Tree *tree)
{
e_view_init(effect, E_VIEW_TYPE_EDJE, NULL, eo, client->view.parent);
client->effect = effect;
+ client->effect_destroy.notify = _view_client_effect_destroy;
+ e_view_event_listener_add(effect, E_VIEW_DESTROY, &client->effect_destroy);
+
return effect;
}