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:
@@ -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 */
|
||||
|
@@ -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 */
|
||||
|
@@ -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.
|
||||
*/
|
||||
|
@@ -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.
|
||||
|
Reference in New Issue
Block a user