From e2c067d256c86bbeb2e99f8d216da267e76e2d8c Mon Sep 17 00:00:00 2001 From: Adam Jackson Date: Fri, 9 Sep 2016 13:45:09 -0400 Subject: egl: Tear down images and syncs at eglTerminate Reviewed-by: Emil Velikov Signed-off-by: Adam Jackson --- src/egl/main/egldisplay.c | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'src/egl') diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c index bbc306337ed..3d4eb8126fc 100644 --- a/src/egl/main/egldisplay.c +++ b/src/egl/main/egldisplay.c @@ -44,6 +44,8 @@ #include "egldriver.h" #include "eglglobals.h" #include "egllog.h" +#include "eglimage.h" +#include "eglsync.h" /* Includes for _eglNativePlatformDetectNativeDisplay */ #ifdef HAVE_MINCORE @@ -300,6 +302,26 @@ _eglReleaseDisplayResources(_EGLDriver *drv, _EGLDisplay *display) drv->API.DestroySurface(drv, display, surf); } assert(!display->ResourceLists[_EGL_RESOURCE_SURFACE]); + + list = display->ResourceLists[_EGL_RESOURCE_IMAGE]; + while (list) { + _EGLImage *image = (_EGLImage *) list; + list = list->Next; + + _eglUnlinkImage(image); + drv->API.DestroyImageKHR(drv, display, image); + } + assert(!display->ResourceLists[_EGL_RESOURCE_IMAGE]); + + list = display->ResourceLists[_EGL_RESOURCE_SYNC]; + while (list) { + _EGLSync *sync = (_EGLSync *) list; + list = list->Next; + + _eglUnlinkSync(sync); + drv->API.DestroySyncKHR(drv, display, sync); + } + assert(!display->ResourceLists[_EGL_RESOURCE_SYNC]); } -- cgit v1.2.3