commit 58abd0b
uint
·
2026-08-03 18:36:25 +0000 UTC
parent b40fa8f
Wayland: closing context and window
1 files changed,
+62,
-0
+62,
-0
1@@ -152,12 +152,74 @@ char* maus_clipboard_get_text(Maus* mw)
2
3 void maus_close(Maus* mw)
4 {
5+ MausBackend* be;
6
7+ if (!mw)
8+ return;
9+
10+ be = &mw->backend;
11+
12+ if (be->buffer)
13+ wl_buffer_destroy(be->buffer);
14+
15+ if (be->shm_data && be->shm_size > 0)
16+ munmap(be->shm_data, be->shm_size);
17+
18+ if (be->xdg_toplevel)
19+ xdg_toplevel_destroy(be->xdg_toplevel);
20+
21+ if (be->xdg_surface)
22+ xdg_surface_destroy(be->xdg_surface);
23+
24+ if (be->surface)
25+ wl_surface_destroy(be->surface);
26+
27+ if (be->wm_base)
28+ xdg_wm_base_destroy(be->wm_base);
29+
30+ if (be->shm)
31+ wl_shm_destroy(be->shm);
32+
33+ if (be->compositor)
34+ wl_compositor_destroy(be->compositor);
35+
36+ if (be->registry)
37+ wl_registry_destroy(be->registry);
38+
39+ if (be->display) {
40+ wl_display_flush(be->display);
41+ wl_display_disconnect(be->display);
42+ }
43+
44+ free(mw->bfb);
45+ free(mw);
46 }
47
48 int8_t maus_close_window(Maus* mw)
49 {
50+ MausBackend* be = &mw->backend;
51
52+ if (be->buffer)
53+ wl_buffer_destroy(be->buffer);
54+ if (be->shm_data && be->shm_size > 0)
55+ munmap(be->shm_data, be->shm_size);
56+
57+ if (be->xdg_toplevel)
58+ xdg_toplevel_destroy(be->xdg_toplevel);
59+ if (be->xdg_surface)
60+ xdg_surface_destroy(be->xdg_surface);
61+ if (be->surface)
62+ wl_surface_destroy(be->surface);
63+
64+ be->buffer = NULL;
65+ be->shm_data = NULL;
66+ be->shm_size = 0;
67+ be->xdg_toplevel = NULL;
68+ be->xdg_surface = NULL;
69+ be->surface = NULL;
70+ be->configured = 0;
71+
72+ return 1;
73 }
74
75 int8_t maus_create_window(Maus* mw)