summaryrefslogtreecommitdiffstats
path: root/src/egl/main
diff options
context:
space:
mode:
authorAdam Jackson <ajax@redhat.com>2016-09-09 13:45:09 -0400
committerAdam Jackson <ajax@redhat.com>2016-09-14 11:45:58 -0400
commite2c067d256c86bbeb2e99f8d216da267e76e2d8c (patch)
treea1bb7098161f9b1bb05ee93693c27021a929420c /src/egl/main
parent6e50f12b043436d066c8e9f24984e1ddc32d8ec4 (diff)
downloadexternal_mesa3d-e2c067d256c86bbeb2e99f8d216da267e76e2d8c.zip
external_mesa3d-e2c067d256c86bbeb2e99f8d216da267e76e2d8c.tar.gz
external_mesa3d-e2c067d256c86bbeb2e99f8d216da267e76e2d8c.tar.bz2
egl: Tear down images and syncs at eglTerminate
Reviewed-by: Emil Velikov <emil.velikov@collabora.com> Signed-off-by: Adam Jackson <ajax@redhat.com>
Diffstat (limited to 'src/egl/main')
-rw-r--r--src/egl/main/egldisplay.c22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c
index bbc3063..3d4eb81 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]);
}