wayland: Don't leak all globals
authorMatthias Clasen <mclasen@redhat.com>
Mon, 5 Jun 2023 21:18:10 +0000 (17:18 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 6 Jun 2023 00:50:09 +0000 (20:50 -0400)
gdk/wayland/gdkdisplay-wayland.c

index 941a6d00f40be379f654ad9dd155a9d5c3d44931..617d67e556fef1354b79a154d37b2469d33141c1 100644 (file)
@@ -698,6 +698,32 @@ gdk_wayland_display_dispose (GObject *object)
 
   g_list_free_full (display_wayland->on_has_globals_closures, g_free);
 
+  g_clear_pointer (&display_wayland->compositor, wl_compositor_destroy);
+  g_clear_pointer (&display_wayland->shm, wl_shm_destroy);
+  g_clear_pointer (&display_wayland->xdg_wm_base, xdg_wm_base_destroy);
+  g_clear_pointer (&display_wayland->zxdg_shell_v6, zxdg_shell_v6_destroy);
+  g_clear_pointer (&display_wayland->gtk_shell, gtk_shell1_destroy);
+  g_clear_pointer (&display_wayland->data_device_manager, wl_data_device_manager_destroy);
+  g_clear_pointer (&display_wayland->subcompositor, wl_subcompositor_destroy);
+  g_clear_pointer (&display_wayland->pointer_gestures, zwp_pointer_gestures_v1_destroy);
+  g_clear_pointer (&display_wayland->primary_selection_manager, zwp_primary_selection_device_manager_v1_destroy);
+  g_clear_pointer (&display_wayland->tablet_manager, zwp_tablet_manager_v2_destroy);
+  g_clear_pointer (&display_wayland->xdg_exporter, zxdg_exporter_v1_destroy);
+  g_clear_pointer (&display_wayland->xdg_exporter_v2, zxdg_exporter_v2_destroy);
+  g_clear_pointer (&display_wayland->xdg_importer, zxdg_importer_v1_destroy);
+  g_clear_pointer (&display_wayland->xdg_importer_v2, zxdg_importer_v2_destroy);
+  g_clear_pointer (&display_wayland->keyboard_shortcuts_inhibit, zwp_keyboard_shortcuts_inhibit_manager_v1_destroy);
+  g_clear_pointer (&display_wayland->server_decoration_manager, org_kde_kwin_server_decoration_manager_destroy);
+  g_clear_pointer (&display_wayland->xdg_output_manager, zxdg_output_manager_v1_destroy);
+  g_clear_pointer (&display_wayland->idle_inhibit_manager, zwp_idle_inhibit_manager_v1_destroy);
+  g_clear_pointer (&display_wayland->xdg_activation, xdg_activation_v1_destroy);
+  g_clear_pointer (&display_wayland->fractional_scale, wp_fractional_scale_manager_v1_destroy);
+  g_clear_pointer (&display_wayland->viewporter, wp_viewporter_destroy);
+
+  g_clear_pointer (&display_wayland->wl_registry, wl_registry_destroy);
+
+  g_clear_pointer (&display_wayland->wl_display, wl_display_disconnect);
+
   G_OBJECT_CLASS (gdk_wayland_display_parent_class)->dispose (object);
 }