xserver: Clean up wm on X server exit
This commit is contained in:
parent
f6ee695805
commit
3cf1172397
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user