From 7a9f52800932c02f5b425158b4978d0c1d2f4fd3 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Fri, 14 Aug 2009 17:29:23 +0800 Subject: [PATCH] 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 --- src/egl/main/egldisplay.c | 35 ++++++----------------------------- src/egl/main/egldisplay.h | 3 --- src/egl/main/eglsurface.h | 1 - 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; -- 2.30.2