From f65ed0a3097d91289ced44d53786506333122b55 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Tue, 26 Jan 2010 15:16:49 +0800 Subject: [PATCH] egl: Use a boolean to indicate whether a resource is linked. An unlinked resource may still be a current resource such as current surfaces. There might still be a need to know which display the unlinked resource belongs to. --- src/egl/main/egldisplay.c | 6 +++++- src/egl/main/egldisplay.h | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c index 359900ca2f2..125909d2bc9 100644 --- a/src/egl/main/egldisplay.c +++ b/src/egl/main/egldisplay.c @@ -242,7 +242,10 @@ _eglCheckResource(void *res, _EGLResourceType type, _EGLDisplay *dpy) void _eglLinkResource(_EGLResource *res, _EGLResourceType type, _EGLDisplay *dpy) { + assert(!res->Display || res->Display == dpy); + res->Display = dpy; + res->IsLinked = EGL_TRUE; res->Next = dpy->ResourceLists[type]; dpy->ResourceLists[type] = res; } @@ -271,5 +274,6 @@ _eglUnlinkResource(_EGLResource *res, _EGLResourceType type) } res->Next = NULL; - res->Display = NULL; + /* do not reset res->Display */ + res->IsLinked = EGL_FALSE; } diff --git a/src/egl/main/egldisplay.h b/src/egl/main/egldisplay.h index 0f5d3a01bbe..8f74ad23a87 100644 --- a/src/egl/main/egldisplay.h +++ b/src/egl/main/egldisplay.h @@ -19,7 +19,11 @@ enum _egl_resource_type { */ struct _egl_resource { + /* which display the resource belongs to */ _EGLDisplay *Display; + EGLBoolean IsLinked; + + /* used to link resources of the same type */ _EGLResource *Next; }; @@ -179,7 +183,7 @@ _eglUnlinkResource(_EGLResource *res, _EGLResourceType type); static INLINE EGLBoolean _eglIsResourceLinked(_EGLResource *res) { - return (res->Display != NULL); + return res->IsLinked; } -- 2.30.2