Commit 3cf11723 authored by Kristian Høgsberg's avatar Kristian Høgsberg
Browse files

xserver: Clean up wm on X server exit

parent f6ee6958
......@@ -414,6 +414,7 @@ wlsc_wm_create(struct wlsc_xserver *wxs)
wl_client_flush(wxs->client);
close(sv[1]);
/* xcb_connect_to_fd takes ownership of the fd. */
wm->conn = xcb_connect_to_fd(sv[0], NULL);
if (xcb_connection_has_error(wm->conn)) {
fprintf(stderr, "xcb_connect_to_fd failed\n");
......@@ -450,6 +451,16 @@ wlsc_wm_create(struct wlsc_xserver *wxs)
return wm;
}
static void
wlsc_wm_destroy(struct wlsc_wm *wm)
{
/* FIXME: Free windows in hash. */
wl_hash_table_destroy(wm->window_hash);
xcb_disconnect(wm->conn);
wl_event_source_remove(wm->source);
free(wm);
}
static void
wlsc_xserver_bind(struct wl_client *client,
struct wl_object *global,
......@@ -556,6 +567,9 @@ wlsc_xserver_cleanup(struct wlsc_process *process, int status)
wl_event_loop_add_fd(mxs->loop, mxs->unix_fd,
WL_EVENT_READABLE,
wlsc_xserver_handle_event, mxs);
wlsc_wm_destroy(mxs->wm);
mxs->wm = NULL;
}
static void
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment