* Kristian Høgsberg <krh@bitplanet.net>
*/
+#define WL_HIDE_DEPRECATED
+
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
-#include "egl_dri2.h"
-
#ifdef HAVE_WAYLAND_PLATFORM
#include "wayland-drm.h"
+#include "wayland-drm-client-protocol.h"
#endif
+#include "egl_dri2.h"
+
const __DRIuseInvalidateExtension use_invalidate = {
{ __DRI_USE_INVALIDATE, 1 }
};
dlclose(dri2_dpy->driver);
free(dri2_dpy->device_name);
- if (disp->PlatformDisplay == NULL) {
- switch (disp->Platform) {
+ switch (disp->Platform) {
#ifdef HAVE_X11_PLATFORM
- case _EGL_PLATFORM_X11:
+ case _EGL_PLATFORM_X11:
+ if (dri2_dpy->own_device) {
xcb_disconnect(dri2_dpy->conn);
- break;
+ }
+ break;
#endif
#ifdef HAVE_DRM_PLATFORM
- case _EGL_PLATFORM_DRM:
- if (dri2_dpy->own_device) {
- gbm_device_destroy(&dri2_dpy->gbm_dri->base.base);
- }
- break;
+ case _EGL_PLATFORM_DRM:
+ if (dri2_dpy->own_device) {
+ gbm_device_destroy(&dri2_dpy->gbm_dri->base.base);
+ }
+ break;
#endif
- default:
- break;
+#ifdef HAVE_WAYLAND_PLATFORM
+ case _EGL_PLATFORM_WAYLAND:
+ wl_drm_destroy(dri2_dpy->wl_drm);
+ if (dri2_dpy->own_device) {
+ wl_display_disconnect(dri2_dpy->wl_dpy);
}
+ break;
+#endif
+ default:
+ break;
}
free(dri2_dpy);
return ret;
}
-/**
- * Called via eglTerminate(), drv->API.Terminate().
- */
-static EGLBoolean
-dri2_wl_terminate(_EGLDriver *drv, _EGLDisplay *disp)
-{
- struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
-
- _eglReleaseDisplayResources(drv, disp);
- _eglCleanupDisplay(disp);
-
- dri2_dpy->core->destroyScreen(dri2_dpy->dri_screen);
- close(dri2_dpy->fd);
- dlclose(dri2_dpy->driver);
- free(dri2_dpy->driver_name);
- free(dri2_dpy->device_name);
- wl_drm_destroy(dri2_dpy->wl_drm);
- if (dri2_dpy->own_device)
- wl_display_disconnect(dri2_dpy->wl_dpy);
- free(dri2_dpy);
- disp->DriverData = NULL;
-
- return EGL_TRUE;
-}
-
static void
drm_handle_device(void *data, struct wl_drm *drm, const char *device)
{
loader_set_logger(_eglLog);
- drv->API.Terminate = dri2_wl_terminate;
-
drv->API.CreateWaylandBufferFromImageWL =
dri2_wl_create_wayland_buffer_from_image_wl;