call wl/x compositor shutdown functions directly during comp shutdown

This commit is contained in:
Mike Blumenkrantz 2017-03-10 15:57:15 -05:00
parent 8b0eb9ad8e
commit cc434190ad
2 changed files with 25 additions and 26 deletions

View File

@ -850,6 +850,14 @@ _e_comp_free(E_Comp *c)
E_FREE_LIST(c->zones, e_object_del);
e_comp_canvas_clear();
#ifdef HAVE_WAYLAND
if (c->comp_type == E_PIXMAP_TYPE_WL)
e_comp_wl_shutdown();
#endif
#ifndef HAVE_WAYLAND_ONLY
if (e_comp_util_has_x())
e_comp_x_shutdown();
#endif
ecore_evas_free(c->ee);

View File

@ -2003,28 +2003,6 @@ _e_comp_wl_compositor_cb_bind(struct wl_client *client, void *data EINA_UNUSED,
wl_resource_set_implementation(res, &_e_comp_interface, e_comp, NULL);
}
static void
_e_comp_wl_compositor_cb_del(void *data EINA_UNUSED)
{
E_Comp_Wl_Output *output;
EINA_LIST_FREE(e_comp_wl->outputs, output)
{
if (output->id) eina_stringshare_del(output->id);
if (output->make) eina_stringshare_del(output->make);
if (output->model) eina_stringshare_del(output->model);
free(output);
}
e_comp_wl_shutdown();
/* delete fd handler */
/* if (e_comp_wl->fd_hdlr) ecore_main_fd_handler_del(e_comp_wl->fd_hdlr); */
/* free allocated data structure */
free(e_comp_wl->extensions);
free(e_comp_wl);
}
static void
_e_comp_wl_subsurface_destroy(struct wl_resource *resource)
{
@ -2703,10 +2681,6 @@ _e_comp_wl_compositor_create(void)
{
E_Comp_Wl_Data *cdata;
/* check for existing compositor. create if needed */
if (e_comp->comp_type == E_PIXMAP_TYPE_NONE)
E_OBJECT_DEL_SET(e_comp, _e_comp_wl_compositor_cb_del);
/* create new compositor data */
if (!(cdata = E_NEW(E_Comp_Wl_Data, 1)))
{
@ -2948,6 +2922,16 @@ e_comp_wl_surface_create_signal_get(void)
EINTERN void
e_comp_wl_shutdown(void)
{
E_Comp_Wl_Output *output;
EINA_LIST_FREE(e_comp_wl->outputs, output)
{
if (output->id) eina_stringshare_del(output->id);
if (output->make) eina_stringshare_del(output->make);
if (output->model) eina_stringshare_del(output->model);
free(output);
}
/* free handlers */
E_FREE_LIST(handlers, ecore_event_handler_del);
@ -2972,6 +2956,13 @@ e_comp_wl_shutdown(void)
/* shutdown ecore_wayland */
ecore_wl2_shutdown();
/* delete fd handler */
/* if (e_comp_wl->fd_hdlr) ecore_main_fd_handler_del(e_comp_wl->fd_hdlr); */
/* free allocated data structure */
free(e_comp_wl->extensions);
free(e_comp_wl);
}
EINTERN struct wl_resource *