egl/wayland: move teardown code to the platform file

Signed-off-by: Emil Velikov <emil.velikov@collabora.com>
Reviewed-by: Eric Engestrom <eric.engestrom@imgtec.com>
This commit is contained in:
Emil Velikov 2017-11-09 19:13:09 +00:00 committed by Emil Velikov
parent 40a01c9a0e
commit 8d745abc00
3 changed files with 27 additions and 20 deletions

View file

@ -994,28 +994,9 @@ dri2_display_destroy(_EGLDisplay *disp)
case _EGL_PLATFORM_DRM: case _EGL_PLATFORM_DRM:
dri2_teardown_drm(disp); dri2_teardown_drm(disp);
break; break;
#ifdef HAVE_WAYLAND_PLATFORM
case _EGL_PLATFORM_WAYLAND: case _EGL_PLATFORM_WAYLAND:
if (dri2_dpy->wl_drm) dri2_teardown_wayland(disp);
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);
}
break; break;
#endif
default: default:
break; break;
} }

View file

@ -433,12 +433,16 @@ dri2_teardown_drm(struct dri2_egl_display *dri2_dpy) {}
#ifdef HAVE_WAYLAND_PLATFORM #ifdef HAVE_WAYLAND_PLATFORM
EGLBoolean EGLBoolean
dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp); dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp);
void
dri2_teardown_wayland(struct dri2_egl_display *dri2_dpy);
#else #else
static inline EGLBoolean static inline EGLBoolean
dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp) dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp)
{ {
return _eglError(EGL_NOT_INITIALIZED, "Wayland platform not built"); return _eglError(EGL_NOT_INITIALIZED, "Wayland platform not built");
} }
static inline void
dri2_teardown_wayland(struct dri2_egl_display *dri2_dpy) {}
#endif #endif
#ifdef HAVE_ANDROID_PLATFORM #ifdef HAVE_ANDROID_PLATFORM

View file

@ -2008,3 +2008,25 @@ dri2_initialize_wayland(_EGLDriver *drv, _EGLDisplay *disp)
return initialized; 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);
}