diff --git a/src/backend/x11/backend.c b/src/backend/x11/backend.c index a56c3e5..eec744d 100644 --- a/src/backend/x11/backend.c +++ b/src/backend/x11/backend.c @@ -195,6 +195,8 @@ backend_t *backend_create(const char *display_name) { void backend_destroy(backend_t *backend) { if (!backend) return; + tray_cleanup(backend); + p_delete(&backend->config_list.cfgs); p_clear(&backend->config_list, 1); diff --git a/src/backend/x11/tray.c b/src/backend/x11/tray.c index 7d38572..ed89b29 100644 --- a/src/backend/x11/tray.c +++ b/src/backend/x11/tray.c @@ -243,3 +243,12 @@ void tray_init( tray_broadcast_manager(tray, backend); xcb_flush(backend->conn); } + +void tray_cleanup(backend_t *backend) { + auto conn = backend->conn; + auto tray = backend->tray; + + xcb_destroy_window(conn, tray->container); + p_clear(backend->tray, 1); + p_delete(&backend->tray); +} diff --git a/src/backend/x11/tray.h b/src/backend/x11/tray.h index 4df0025..53bcda4 100644 --- a/src/backend/x11/tray.h +++ b/src/backend/x11/tray.h @@ -15,3 +15,4 @@ void tray_init( int32_t host_width, int32_t host_height ); +void tray_cleanup(backend_t *backend);