egl: Remove hash table for surfaces.
authorChia-I Wu <olvaffe@gmail.com>
Fri, 14 Aug 2009 09:29:23 +0000 (17:29 +0800)
committerBrian Paul <brianp@vmware.com>
Tue, 18 Aug 2009 14:49:34 +0000 (08:49 -0600)
The hash table was used to map a surface to a handle.  It is simpler to
cast directly.

Signed-off-by: Chia-I Wu <olvaffe@gmail.com>
src/egl/main/egldisplay.c
src/egl/main/egldisplay.h
src/egl/main/eglsurface.h

index 0693f258dedc4db359d85c8f14934c6e7c7b67a1..7f2d035c66a59999e21197359523f1bca1baa9bf 100644 (file)
@@ -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;
 }
index e1cbbac837cf4ca42d05fce2556ab7cb00c820c2..dfc54f17cb6ee881a6c0b540b0a1f5da8dfebdd0 100644 (file)
@@ -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
index cfae6970f23eac55f59a231cfff69842ad6e510c..f6d44b5922e0c826548bf4fc9cc6c2d178b9a317 100644 (file)
@@ -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;