diff options
author | Chia-I Wu <[email protected]> | 2010-01-24 20:30:04 +0800 |
---|---|---|
committer | Chia-I Wu <[email protected]> | 2010-01-24 20:38:15 +0800 |
commit | 7abf42626fe8552cf898652134f3767e591614ab (patch) | |
tree | 3789e1b655e73cdc7cec84ba1954844e49af5ab3 /src/egl/main/egldisplay.c | |
parent | b4d2c97a2d2cce92fa638ff74bef7dedf593fd1f (diff) |
egl: Add _EGLResource and _EGLResourceType.
Resources are objects managed by a display. They can be linked to or
unlinked from a display. It is also possible to check if a resource is
valid.
Diffstat (limited to 'src/egl/main/egldisplay.c')
-rw-r--r-- | src/egl/main/egldisplay.c | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c index 79efa8477e6..ef144f7f07a 100644 --- a/src/egl/main/egldisplay.c +++ b/src/egl/main/egldisplay.c @@ -205,4 +205,64 @@ _eglCheckDisplayHandle(EGLDisplay dpy) } +/** + * Return EGL_TRUE if the given resource is valid. That is, the display does + * own the resource. + */ +EGLBoolean +_eglCheckResource(_EGLResource *res, _EGLResourceType type, _EGLDisplay *dpy) +{ + _EGLResource *list = dpy->ResourceLists[type]; + + while (list) { + if (res == list) { + assert(list->Display == dpy); + break; + } + list = list->Next; + } + + return (list != NULL); +} + + #endif /* !_EGL_SKIP_HANDLE_CHECK */ + + +/** + * Link a resource to a display. + */ +void +_eglLinkResource(_EGLResource *res, _EGLResourceType type, _EGLDisplay *dpy) +{ + res->Display = dpy; + res->Next = dpy->ResourceLists[type]; + dpy->ResourceLists[type] = res; +} + + +/** + * Unlink a linked resource from its display. + */ +void +_eglUnlinkResource(_EGLResource *res, _EGLResourceType type) +{ + _EGLResource *prev; + + prev = res->Display->ResourceLists[type]; + if (prev != res) { + while (prev) { + if (prev->Next == res) + break; + prev = prev->Next; + } + assert(prev); + prev->Next = res->Next; + } + else { + res->Display->ResourceLists[type] = res->Next; + } + + res->Next = NULL; + res->Display = NULL; +} |