The latest revision of the spec explicitly requires the same handle to be returned for the same native display.
Signed-off-by: Chia-I Wu <olva...@gmail.com> --- src/egl/main/eglapi.c | 9 ++++++--- src/egl/main/egldisplay.c | 19 +++++++++++++++++++ src/egl/main/egldisplay.h | 4 ++++ 3 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/egl/main/eglapi.c b/src/egl/main/eglapi.c index 71fa43e..714d404 100644 --- a/src/egl/main/eglapi.c +++ b/src/egl/main/eglapi.c @@ -51,9 +51,12 @@ eglGetDisplay(NativeDisplayType nativeDisplay) { _EGLDisplay *dpy; _eglInitGlobals(); - dpy = _eglNewDisplay(nativeDisplay); - if (dpy) - _eglLinkDisplay(dpy); + dpy = _eglFindDisplay(nativeDisplay); + if (!dpy) { + dpy = _eglNewDisplay(nativeDisplay); + if (dpy) + _eglLinkDisplay(dpy); + } return _eglGetDisplayHandle(dpy); } diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c index 943912d..8c3dfda 100644 --- a/src/egl/main/egldisplay.c +++ b/src/egl/main/egldisplay.c @@ -89,6 +89,25 @@ _eglLookupDisplay(EGLDisplay dpy) } +_EGLDisplay * +_eglFindDisplay(NativeDisplayType nativeDisplay) +{ + EGLuint key = _eglHashFirstEntry(_eglGlobal.Displays); + + while (key) { + _EGLDisplay *dpy = (_EGLDisplay *) + _eglHashLookup(_eglGlobal.Displays, key); + assert(dpy); + + if (dpy->NativeDisplay == nativeDisplay) + return dpy; + key = _eglHashNextEntry(_eglGlobal.Displays, key); + } + + return NULL; +} + + /** * Free all the data hanging of an _EGLDisplay object, but not * the object itself. diff --git a/src/egl/main/egldisplay.h b/src/egl/main/egldisplay.h index c907df5..c5a7f08 100644 --- a/src/egl/main/egldisplay.h +++ b/src/egl/main/egldisplay.h @@ -51,6 +51,10 @@ extern _EGLDisplay * _eglLookupDisplay(EGLDisplay dpy); +extern _EGLDisplay * +_eglFindDisplay(NativeDisplayType nativeDisplay); + + extern void _eglCleanupDisplay(_EGLDisplay *disp); -- 1.6.2.4 ------------------------------------------------------------------------------ Enter the BlackBerry Developer Challenge This is your chance to win up to $100,000 in prizes! For a limited time, vendors submitting new applications to BlackBerry App World(TM) will have the opportunity to enter the BlackBerry Developer Challenge. See full prize details at: http://p.sf.net/sfu/Challenge _______________________________________________ Mesa3d-dev mailing list Mesa3d-dev@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mesa3d-dev