egl: Move surface functions in egldisplay.[ch] to eglsurface.[ch]
Move functions to where they should be. There should be no real change here.
This commit is contained in:
@@ -182,49 +182,6 @@ _eglCleanupDisplay(_EGLDisplay *disp)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Link a surface to a display and return the handle of the link.
|
||||
* The handle can be passed to client directly.
|
||||
*/
|
||||
EGLSurface
|
||||
_eglLinkSurface(_EGLSurface *surf, _EGLDisplay *dpy)
|
||||
{
|
||||
surf->Display = dpy;
|
||||
surf->Next = dpy->SurfaceList;
|
||||
dpy->SurfaceList = surf;
|
||||
return (EGLSurface) surf;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Unlink a linked surface from its display.
|
||||
* Accessing an unlinked surface should generate EGL_BAD_SURFACE error.
|
||||
*/
|
||||
void
|
||||
_eglUnlinkSurface(_EGLSurface *surf)
|
||||
{
|
||||
_EGLSurface *prev;
|
||||
|
||||
prev = surf->Display->SurfaceList;
|
||||
if (prev != surf) {
|
||||
while (prev) {
|
||||
if (prev->Next == surf)
|
||||
break;
|
||||
prev = prev->Next;
|
||||
}
|
||||
assert(prev);
|
||||
prev->Next = surf->Next;
|
||||
}
|
||||
else {
|
||||
prev = NULL;
|
||||
surf->Display->SurfaceList = surf->Next;
|
||||
}
|
||||
|
||||
surf->Next = NULL;
|
||||
surf->Display = NULL;
|
||||
}
|
||||
|
||||
|
||||
#ifndef _EGL_SKIP_HANDLE_CHECK
|
||||
|
||||
|
||||
@@ -248,25 +205,4 @@ _eglCheckDisplayHandle(EGLDisplay dpy)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return EGL_TRUE if the given handle is a valid handle to a surface.
|
||||
*/
|
||||
EGLBoolean
|
||||
_eglCheckSurfaceHandle(EGLSurface surf, _EGLDisplay *dpy)
|
||||
{
|
||||
_EGLSurface *cur = NULL;
|
||||
|
||||
if (dpy)
|
||||
cur = dpy->SurfaceList;
|
||||
while (cur) {
|
||||
if (cur == (_EGLSurface *) surf) {
|
||||
assert(cur->Display == dpy);
|
||||
break;
|
||||
}
|
||||
cur = cur->Next;
|
||||
}
|
||||
return (cur != NULL);
|
||||
}
|
||||
|
||||
|
||||
#endif /* !_EGL_SKIP_HANDLE_CHECK */
|
||||
|
@@ -3,7 +3,6 @@
|
||||
|
||||
#include "egltypedefs.h"
|
||||
#include "egldefines.h"
|
||||
#include "eglsurface.h"
|
||||
|
||||
|
||||
/**
|
||||
@@ -80,14 +79,6 @@ PUBLIC void
|
||||
_eglCleanupDisplay(_EGLDisplay *disp);
|
||||
|
||||
|
||||
extern EGLSurface
|
||||
_eglLinkSurface(_EGLSurface *surf, _EGLDisplay *dpy);
|
||||
|
||||
|
||||
extern void
|
||||
_eglUnlinkSurface(_EGLSurface *surf);
|
||||
|
||||
|
||||
#ifndef _EGL_SKIP_HANDLE_CHECK
|
||||
|
||||
|
||||
@@ -95,10 +86,6 @@ extern EGLBoolean
|
||||
_eglCheckDisplayHandle(EGLDisplay dpy);
|
||||
|
||||
|
||||
extern EGLBoolean
|
||||
_eglCheckSurfaceHandle(EGLSurface surf, _EGLDisplay *dpy);
|
||||
|
||||
|
||||
#else /* !_EGL_SKIP_HANDLE_CHECK */
|
||||
|
||||
/* Only do a quick check. This is NOT standard compliant. */
|
||||
@@ -110,14 +97,6 @@ _eglCheckDisplayHandle(EGLDisplay dpy)
|
||||
}
|
||||
|
||||
|
||||
static INLINE EGLBoolean
|
||||
_eglCheckSurfaceHandle(EGLSurface surf, _EGLDisplay *dpy)
|
||||
{
|
||||
_EGLSurface *s = (_EGLSurface *) surf;
|
||||
return (dpy && s && s->Display == dpy);
|
||||
}
|
||||
|
||||
|
||||
#endif /* _EGL_SKIP_HANDLE_CHECK */
|
||||
|
||||
|
||||
@@ -155,40 +134,6 @@ _eglIsDisplayLinked(_EGLDisplay *dpy)
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Lookup a handle to find the linked surface.
|
||||
* Return NULL if the handle has no corresponding linked surface.
|
||||
*/
|
||||
static INLINE _EGLSurface *
|
||||
_eglLookupSurface(EGLSurface surface, _EGLDisplay *dpy)
|
||||
{
|
||||
_EGLSurface *surf = (_EGLSurface *) surface;
|
||||
if (!_eglCheckSurfaceHandle(surf, dpy))
|
||||
surf = NULL;
|
||||
return surf;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the handle of a linked surface, or EGL_NO_SURFACE.
|
||||
*/
|
||||
static INLINE EGLSurface
|
||||
_eglGetSurfaceHandle(_EGLSurface *surf)
|
||||
{
|
||||
return (EGLSurface) ((surf && surf->Display) ? surf : EGL_NO_SURFACE);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return true if the surface is linked to a display.
|
||||
*/
|
||||
static INLINE EGLBoolean
|
||||
_eglIsSurfaceLinked(_EGLSurface *surf)
|
||||
{
|
||||
return (EGLBoolean) (_eglGetSurfaceHandle(surf) != EGL_NO_SURFACE);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Cast an unsigned int to a pointer.
|
||||
*/
|
||||
|
@@ -511,3 +511,73 @@ _eglCreatePbufferFromClientBuffer(_EGLDriver *drv, _EGLDisplay *dpy,
|
||||
}
|
||||
|
||||
#endif /* EGL_VERSION_1_2 */
|
||||
|
||||
|
||||
/**
|
||||
* Link a surface to a display and return the handle of the link.
|
||||
* The handle can be passed to client directly.
|
||||
*/
|
||||
EGLSurface
|
||||
_eglLinkSurface(_EGLSurface *surf, _EGLDisplay *dpy)
|
||||
{
|
||||
surf->Display = dpy;
|
||||
surf->Next = dpy->SurfaceList;
|
||||
dpy->SurfaceList = surf;
|
||||
return (EGLSurface) surf;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Unlink a linked surface from its display.
|
||||
* Accessing an unlinked surface should generate EGL_BAD_SURFACE error.
|
||||
*/
|
||||
void
|
||||
_eglUnlinkSurface(_EGLSurface *surf)
|
||||
{
|
||||
_EGLSurface *prev;
|
||||
|
||||
prev = surf->Display->SurfaceList;
|
||||
if (prev != surf) {
|
||||
while (prev) {
|
||||
if (prev->Next == surf)
|
||||
break;
|
||||
prev = prev->Next;
|
||||
}
|
||||
assert(prev);
|
||||
prev->Next = surf->Next;
|
||||
}
|
||||
else {
|
||||
prev = NULL;
|
||||
surf->Display->SurfaceList = surf->Next;
|
||||
}
|
||||
|
||||
surf->Next = NULL;
|
||||
surf->Display = NULL;
|
||||
}
|
||||
|
||||
|
||||
#ifndef _EGL_SKIP_HANDLE_CHECK
|
||||
|
||||
|
||||
/**
|
||||
* Return EGL_TRUE if the given handle is a valid handle to a surface.
|
||||
*/
|
||||
EGLBoolean
|
||||
_eglCheckSurfaceHandle(EGLSurface surf, _EGLDisplay *dpy)
|
||||
{
|
||||
_EGLSurface *cur = NULL;
|
||||
|
||||
if (dpy)
|
||||
cur = dpy->SurfaceList;
|
||||
while (cur) {
|
||||
if (cur == (_EGLSurface *) surf) {
|
||||
assert(cur->Display == dpy);
|
||||
break;
|
||||
}
|
||||
cur = cur->Next;
|
||||
}
|
||||
return (cur != NULL);
|
||||
}
|
||||
|
||||
|
||||
#endif /* !_EGL_SKIP_HANDLE_CHECK */
|
||||
|
@@ -111,4 +111,67 @@ _eglIsSurfaceBound(_EGLSurface *surf)
|
||||
}
|
||||
|
||||
|
||||
extern EGLSurface
|
||||
_eglLinkSurface(_EGLSurface *surf, _EGLDisplay *dpy);
|
||||
|
||||
|
||||
extern void
|
||||
_eglUnlinkSurface(_EGLSurface *surf);
|
||||
|
||||
|
||||
#ifndef _EGL_SKIP_HANDLE_CHECK
|
||||
|
||||
|
||||
extern EGLBoolean
|
||||
_eglCheckSurfaceHandle(EGLSurface surf, _EGLDisplay *dpy);
|
||||
|
||||
|
||||
#else /* !_EGL_SKIP_HANDLE_CHECK */
|
||||
|
||||
|
||||
static INLINE EGLBoolean
|
||||
_eglCheckSurfaceHandle(EGLSurface surf, _EGLDisplay *dpy)
|
||||
{
|
||||
_EGLSurface *s = (_EGLSurface *) surf;
|
||||
return (dpy && s && s->Display == dpy);
|
||||
}
|
||||
|
||||
|
||||
#endif /* _EGL_SKIP_HANDLE_CHECK */
|
||||
|
||||
|
||||
/**
|
||||
* Lookup a handle to find the linked surface.
|
||||
* Return NULL if the handle has no corresponding linked surface.
|
||||
*/
|
||||
static INLINE _EGLSurface *
|
||||
_eglLookupSurface(EGLSurface surface, _EGLDisplay *dpy)
|
||||
{
|
||||
_EGLSurface *surf = (_EGLSurface *) surface;
|
||||
if (!_eglCheckSurfaceHandle(surf, dpy))
|
||||
surf = NULL;
|
||||
return surf;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return the handle of a linked surface, or EGL_NO_SURFACE.
|
||||
*/
|
||||
static INLINE EGLSurface
|
||||
_eglGetSurfaceHandle(_EGLSurface *surf)
|
||||
{
|
||||
return (EGLSurface) ((surf && surf->Display) ? surf : EGL_NO_SURFACE);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Return true if the surface is linked to a display.
|
||||
*/
|
||||
static INLINE EGLBoolean
|
||||
_eglIsSurfaceLinked(_EGLSurface *surf)
|
||||
{
|
||||
return (EGLBoolean) (_eglGetSurfaceHandle(surf) != EGL_NO_SURFACE);
|
||||
}
|
||||
|
||||
|
||||
#endif /* EGLSURFACE_INCLUDED */
|
||||
|
Reference in New Issue
Block a user