diff options
author | emersion <contact@emersion.fr> | 2017-10-31 14:21:12 +0100 |
---|---|---|
committer | emersion <contact@emersion.fr> | 2017-10-31 14:21:12 +0100 |
commit | 2c63aa2056d564be2fee50a175b3400bdfb96660 (patch) | |
tree | 58eb4987dbc76cbbb4773065dcbd979dcf66bd35 | |
parent | c97b5ac4ce43794b68b8aabcf8005b9cbd60a51a (diff) |
Destroy x11 output with backend
-rw-r--r-- | backend/x11/backend.c | 5 | ||||
-rw-r--r-- | types/wlr_cursor.c | 2 |
2 files changed, 5 insertions, 2 deletions
diff --git a/backend/x11/backend.c b/backend/x11/backend.c index 37bbdaec..97b0dd8c 100644 --- a/backend/x11/backend.c +++ b/backend/x11/backend.c @@ -298,6 +298,9 @@ static void wlr_x11_backend_destroy(struct wlr_backend *backend) { struct wlr_x11_backend *x11 = (struct wlr_x11_backend *)backend; + struct wlr_x11_output *output = &x11->output; + wlr_output_destroy(&output->wlr_output); + wl_event_source_remove(x11->frame_timer); wlr_egl_free(&x11->egl); @@ -331,7 +334,7 @@ static void output_destroy(struct wlr_output *wlr_output) { eglDestroySurface(x11->egl.display, output->surf); xcb_destroy_window(x11->xcb_conn, output->win); - free(wlr_output); + // output has been allocated on the stack, do not free it } static void output_make_current(struct wlr_output *wlr_output) { diff --git a/types/wlr_cursor.c b/types/wlr_cursor.c index 70ddea47..e44b957a 100644 --- a/types/wlr_cursor.c +++ b/types/wlr_cursor.c @@ -100,9 +100,9 @@ struct wlr_cursor *wlr_cursor_create() { static void output_cursor_remove( struct wlr_cursor_output_cursor *output_cursor) { + wl_list_remove(&output_cursor->layout_output_destroy.link); wl_list_remove(&output_cursor->link); wlr_output_cursor_destroy(output_cursor->output_cursor); - wl_list_remove(&output_cursor->layout_output_destroy.link); free(output_cursor); } |