summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChia-I Wu <[email protected]>2009-08-14 17:29:23 +0800
committerBrian Paul <[email protected]>2009-08-18 08:49:34 -0600
commit7a9f52800932c02f5b425158b4978d0c1d2f4fd3 (patch)
tree7c7b2c31e47a50f6f9bc11ec932ec722314f1246
parentccc2b0bc65b02d4582d52d133290c8cb046bce8f (diff)
egl: Remove hash table for surfaces.
The hash table was used to map a surface to a handle. It is simpler to cast directly. Signed-off-by: Chia-I Wu <[email protected]>
-rw-r--r--src/egl/main/egldisplay.c35
-rw-r--r--src/egl/main/egldisplay.h3
-rw-r--r--src/egl/main/eglsurface.h1
3 files changed, 6 insertions, 33 deletions
diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c
index 0693f258ded..7f2d035c66a 100644
--- a/src/egl/main/egldisplay.c
+++ b/src/egl/main/egldisplay.c
@@ -18,8 +18,6 @@
static _EGL_DECLARE_MUTEX(_eglDisplayInitMutex);
static _EGLHashtable *_eglDisplayHash;
-/* TODO surface hash table should be per-display */
-static _EGLHashtable *_eglSurfaceHash;
/**
@@ -47,8 +45,6 @@ _eglFiniDisplay(void)
_eglDeleteHashTable(_eglDisplayHash);
_eglDisplayHash = NULL;
- _eglDeleteHashTable(_eglSurfaceHash);
- _eglSurfaceHash = NULL;
}
_eglUnlockMutex(&_eglDisplayInitMutex);
}
@@ -64,7 +60,6 @@ _eglInitDisplay(void)
/* check again after acquiring lock */
if (!_eglDisplayHash) {
_eglDisplayHash = _eglNewHashTable();
- _eglSurfaceHash = _eglNewHashTable();
_eglAddAtExitCall(_eglFiniDisplay);
}
@@ -90,9 +85,6 @@ _eglNewDisplay(NativeDisplayType nativeDisplay)
dpy->Xdpy = (Display *) nativeDisplay;
#endif
- _eglInitDisplay();
- dpy->SurfaceHash = _eglSurfaceHash;
-
dpy->DriverName = _eglPreloadDriver(dpy);
if (!dpy->DriverName) {
free(dpy);
@@ -319,18 +311,10 @@ _eglLookupContext(EGLContext ctx, _EGLDisplay *dpy)
EGLSurface
_eglLinkSurface(_EGLSurface *surf, _EGLDisplay *dpy)
{
- EGLuint key;
-
surf->Display = dpy;
surf->Next = dpy->SurfaceList;
dpy->SurfaceList = surf;
-
- key = _eglHashGenKey(dpy->SurfaceHash);
- assert(key);
- _eglHashInsert(dpy->SurfaceHash, key, surf);
-
- surf->Handle = (EGLSurface) _eglUIntToPointer(key);
- return surf->Handle;
+ return (EGLSurface) surf;
}
@@ -342,10 +326,6 @@ void
_eglUnlinkSurface(_EGLSurface *surf)
{
_EGLSurface *prev;
- EGLuint key = _eglPointerToUInt((void *) surf->Handle);
-
- _eglHashRemove(surf->Display->SurfaceHash, key);
- surf->Handle = EGL_NO_SURFACE;
prev = surf->Display->SurfaceList;
if (prev != surf) {
@@ -371,12 +351,9 @@ _eglUnlinkSurface(_EGLSurface *surf)
* Return the handle of a linked surface, or EGL_NO_SURFACE.
*/
EGLSurface
-_eglGetSurfaceHandle(_EGLSurface *surface)
+_eglGetSurfaceHandle(_EGLSurface *surf)
{
- if (surface)
- return surface->Handle;
- else
- return EGL_NO_SURFACE;
+ return (EGLSurface) ((surf && surf->Display) ? surf : EGL_NO_SURFACE);
}
@@ -385,8 +362,8 @@ _eglGetSurfaceHandle(_EGLSurface *surface)
* Return NULL if the handle has no corresponding linked surface.
*/
_EGLSurface *
-_eglLookupSurface(EGLSurface surf, _EGLDisplay *dpy)
+_eglLookupSurface(EGLSurface surface, _EGLDisplay *dpy)
{
- EGLuint key = _eglPointerToUInt((void *) surf);
- return (_EGLSurface *) _eglHashLookup(dpy->SurfaceHash, key);
+ _EGLSurface *surf = (_EGLSurface *) surface;
+ return (surf && surf->Display) ? surf : NULL;
}
diff --git a/src/egl/main/egldisplay.h b/src/egl/main/egldisplay.h
index e1cbbac837c..dfc54f17cb6 100644
--- a/src/egl/main/egldisplay.h
+++ b/src/egl/main/egldisplay.h
@@ -52,9 +52,6 @@ struct _egl_display
_EGLContext *ContextList;
_EGLSurface *SurfaceList;
- /* hash table to map surfaces to handles */
- _EGLHashtable *SurfaceHash;
-
#ifdef _EGL_PLATFORM_X
Display *Xdpy;
#endif
diff --git a/src/egl/main/eglsurface.h b/src/egl/main/eglsurface.h
index cfae6970f23..f6d44b5922e 100644
--- a/src/egl/main/eglsurface.h
+++ b/src/egl/main/eglsurface.h
@@ -13,7 +13,6 @@ struct _egl_surface
/* Managed by EGLDisplay for linking */
_EGLDisplay *Display;
_EGLSurface *Next;
- EGLSurface Handle;
/* The bound status of the surface */
_EGLContext *Binding;