EGLBoolean EGLAPIENTRY eglDestroySyncKHR(EGLDisplay dpy, EGLSyncKHR sync) { _EGLDisplay *disp = _eglLockDisplay(dpy); _EGLSync *s = _eglLookupSync(sync, disp); _EGLDriver *drv; EGLBoolean ret; _EGL_CHECK_SYNC(disp, s, EGL_FALSE, drv); assert(disp->Extensions.KHR_reusable_sync); _eglUnlinkSync(s); ret = drv->API.DestroySyncKHR(drv, disp, s); RETURN_EGL_EVAL(disp, ret); }
/** * Destroy the contexts and surfaces that are linked to the display. */ void _eglReleaseDisplayResources(_EGLDriver *drv, _EGLDisplay *display) { _EGLResource *list; list = display->ResourceLists[_EGL_RESOURCE_CONTEXT]; while (list) { _EGLContext *ctx = (_EGLContext *) list; list = list->Next; _eglUnlinkContext(ctx); drv->API.DestroyContext(drv, display, ctx); } assert(!display->ResourceLists[_EGL_RESOURCE_CONTEXT]); list = display->ResourceLists[_EGL_RESOURCE_SURFACE]; while (list) { _EGLSurface *surf = (_EGLSurface *) list; list = list->Next; _eglUnlinkSurface(surf); 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]); }