egl/wayland: move teardown code to the platform file
[mesa.git] / src / egl / drivers / dri2 / platform_wayland.c
index 7010dfdcb2beeafe30d8a23d373a2ce1f11c17ed..2aecce35f998beda47c3ca77a085e1e53c0d0b80 100644 (file)
@@ -2008,3 +2008,25 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp)
    return initialized;
 
 }
+
+void
+dri2_teardown_wayland(struct dri2_egl_display *dri2_dpy)
+{
+   if (dri2_dpy->wl_drm)
+      wl_drm_destroy(dri2_dpy->wl_drm);
+   if (dri2_dpy->wl_dmabuf)
+      zwp_linux_dmabuf_v1_destroy(dri2_dpy->wl_dmabuf);
+   if (dri2_dpy->wl_shm)
+      wl_shm_destroy(dri2_dpy->wl_shm);
+   if (dri2_dpy->wl_registry)
+      wl_registry_destroy(dri2_dpy->wl_registry);
+   if (dri2_dpy->wl_queue)
+      wl_event_queue_destroy(dri2_dpy->wl_queue);
+   if (dri2_dpy->wl_dpy_wrapper)
+      wl_proxy_wrapper_destroy(dri2_dpy->wl_dpy_wrapper);
+   u_vector_finish(&dri2_dpy->wl_modifiers.argb8888);
+   u_vector_finish(&dri2_dpy->wl_modifiers.xrgb8888);
+   u_vector_finish(&dri2_dpy->wl_modifiers.rgb565);
+   if (dri2_dpy->own_device)
+      wl_display_disconnect(dri2_dpy->wl_dpy);
+}