egl: Move context functions in egldisplay.[ch] to eglcontext.[ch].

Move functions to where they should be.  There should be no real change
here.
This commit is contained in:
Chia-I Wu
2010-01-23 22:53:59 +08:00
parent 7be4d6b5f7
commit 5e66d18932
4 changed files with 132 additions and 118 deletions

View File

@@ -251,3 +251,72 @@ _eglCopyContextMESA(_EGLDriver *drv, EGLDisplay dpy, EGLContext source,
*/
return EGL_FALSE;
}
/**
* Link a context to a display and return the handle of the link.
* The handle can be passed to client directly.
*/
EGLContext
_eglLinkContext(_EGLContext *ctx, _EGLDisplay *dpy)
{
ctx->Display = dpy;
ctx->Next = dpy->ContextList;
dpy->ContextList = ctx;
return (EGLContext) ctx;
}
/**
* Unlink a linked context from its display.
* Accessing an unlinked context should generate EGL_BAD_CONTEXT error.
*/
void
_eglUnlinkContext(_EGLContext *ctx)
{
_EGLContext *prev;
prev = ctx->Display->ContextList;
if (prev != ctx) {
while (prev) {
if (prev->Next == ctx)
break;
prev = prev->Next;
}
assert(prev);
prev->Next = ctx->Next;
}
else {
ctx->Display->ContextList = ctx->Next;
}
ctx->Next = NULL;
ctx->Display = NULL;
}
#ifndef _EGL_SKIP_HANDLE_CHECK
/**
* Return EGL_TRUE if the given handle is a valid handle to a context.
*/
EGLBoolean
_eglCheckContextHandle(EGLContext ctx, _EGLDisplay *dpy)
{
_EGLContext *cur = NULL;
if (dpy)
cur = dpy->ContextList;
while (cur) {
if (cur == (_EGLContext *) ctx) {
assert(cur->Display == dpy);
break;
}
cur = cur->Next;
}
return (cur != NULL);
}
#endif /* !_EGL_SKIP_HANDLE_CHECK */

View File

@@ -65,4 +65,67 @@ _eglIsContextBound(_EGLContext *ctx)
}
extern EGLContext
_eglLinkContext(_EGLContext *ctx, _EGLDisplay *dpy);
extern void
_eglUnlinkContext(_EGLContext *ctx);
#ifndef _EGL_SKIP_HANDLE_CHECK
extern EGLBoolean
_eglCheckContextHandle(EGLContext ctx, _EGLDisplay *dpy);
#else /* !_EGL_SKIP_HANDLE_CHECK */
static INLINE EGLBoolean
_eglCheckContextHandle(EGLContext ctx, _EGLDisplay *dpy)
{
_EGLContext *c = (_EGLContext *) ctx;
return (dpy && c && c->Display == dpy);
}
#endif /* _EGL_SKIP_HANDLE_CHECK */
/**
* Lookup a handle to find the linked context.
* Return NULL if the handle has no corresponding linked context.
*/
static INLINE _EGLContext *
_eglLookupContext(EGLContext context, _EGLDisplay *dpy)
{
_EGLContext *ctx = (_EGLContext *) context;
if (!_eglCheckContextHandle(context, dpy))
ctx = NULL;
return ctx;
}
/**
* Return the handle of a linked context, or EGL_NO_CONTEXT.
*/
static INLINE EGLContext
_eglGetContextHandle(_EGLContext *ctx)
{
return (EGLContext) ((ctx && ctx->Display) ? ctx : EGL_NO_CONTEXT);
}
/**
* Return true if the context is linked to a display.
*/
static INLINE EGLBoolean
_eglIsContextLinked(_EGLContext *ctx)
{
return (EGLBoolean) (_eglGetContextHandle(ctx) != EGL_NO_CONTEXT);
}
#endif /* EGLCONTEXT_INCLUDED */

View File

@@ -182,48 +182,6 @@ _eglCleanupDisplay(_EGLDisplay *disp)
}
/**
* Link a context to a display and return the handle of the link.
* The handle can be passed to client directly.
*/
EGLContext
_eglLinkContext(_EGLContext *ctx, _EGLDisplay *dpy)
{
ctx->Display = dpy;
ctx->Next = dpy->ContextList;
dpy->ContextList = ctx;
return (EGLContext) ctx;
}
/**
* Unlink a linked context from its display.
* Accessing an unlinked context should generate EGL_BAD_CONTEXT error.
*/
void
_eglUnlinkContext(_EGLContext *ctx)
{
_EGLContext *prev;
prev = ctx->Display->ContextList;
if (prev != ctx) {
while (prev) {
if (prev->Next == ctx)
break;
prev = prev->Next;
}
assert(prev);
prev->Next = ctx->Next;
}
else {
ctx->Display->ContextList = ctx->Next;
}
ctx->Next = NULL;
ctx->Display = NULL;
}
/**
* Link a surface to a display and return the handle of the link.
* The handle can be passed to client directly.
@@ -290,27 +248,6 @@ _eglCheckDisplayHandle(EGLDisplay dpy)
}
/**
* Return EGL_TRUE if the given handle is a valid handle to a context.
*/
EGLBoolean
_eglCheckContextHandle(EGLContext ctx, _EGLDisplay *dpy)
{
_EGLContext *cur = NULL;
if (dpy)
cur = dpy->ContextList;
while (cur) {
if (cur == (_EGLContext *) ctx) {
assert(cur->Display == dpy);
break;
}
cur = cur->Next;
}
return (cur != NULL);
}
/**
* Return EGL_TRUE if the given handle is a valid handle to a surface.
*/

View File

@@ -3,7 +3,6 @@
#include "egltypedefs.h"
#include "egldefines.h"
#include "eglcontext.h"
#include "eglsurface.h"
@@ -81,14 +80,6 @@ PUBLIC void
_eglCleanupDisplay(_EGLDisplay *disp);
extern EGLContext
_eglLinkContext(_EGLContext *ctx, _EGLDisplay *dpy);
extern void
_eglUnlinkContext(_EGLContext *ctx);
extern EGLSurface
_eglLinkSurface(_EGLSurface *surf, _EGLDisplay *dpy);
@@ -104,10 +95,6 @@ extern EGLBoolean
_eglCheckDisplayHandle(EGLDisplay dpy);
extern EGLBoolean
_eglCheckContextHandle(EGLContext ctx, _EGLDisplay *dpy);
extern EGLBoolean
_eglCheckSurfaceHandle(EGLSurface surf, _EGLDisplay *dpy);
@@ -123,14 +110,6 @@ _eglCheckDisplayHandle(EGLDisplay dpy)
}
static INLINE EGLBoolean
_eglCheckContextHandle(EGLContext ctx, _EGLDisplay *dpy)
{
_EGLContext *c = (_EGLContext *) ctx;
return (dpy && c && c->Display == dpy);
}
static INLINE EGLBoolean
_eglCheckSurfaceHandle(EGLSurface surf, _EGLDisplay *dpy)
{
@@ -176,40 +155,6 @@ _eglIsDisplayLinked(_EGLDisplay *dpy)
}
/**
* Lookup a handle to find the linked context.
* Return NULL if the handle has no corresponding linked context.
*/
static INLINE _EGLContext *
_eglLookupContext(EGLContext context, _EGLDisplay *dpy)
{
_EGLContext *ctx = (_EGLContext *) context;
if (!_eglCheckContextHandle(context, dpy))
ctx = NULL;
return ctx;
}
/**
* Return the handle of a linked context, or EGL_NO_CONTEXT.
*/
static INLINE EGLContext
_eglGetContextHandle(_EGLContext *ctx)
{
return (EGLContext) ((ctx && ctx->Display) ? ctx : EGL_NO_CONTEXT);
}
/**
* Return true if the context is linked to a display.
*/
static INLINE EGLBoolean
_eglIsContextLinked(_EGLContext *ctx)
{
return (EGLBoolean) (_eglGetContextHandle(ctx) != EGL_NO_CONTEXT);
}
/**
* Lookup a handle to find the linked surface.
* Return NULL if the handle has no corresponding linked surface.