From be9d1ab171b1b29108c781af84dd500707a12925 Mon Sep 17 00:00:00 2001 From: Chia-I Wu Date: Thu, 16 Jul 2009 21:21:56 -0700 Subject: egl: Return the same EGL Display for the same native display. 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 --- src/egl/main/egldisplay.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'src/egl/main/egldisplay.c') diff --git a/src/egl/main/egldisplay.c b/src/egl/main/egldisplay.c index a30e810b4a..1f1f41ea71 100644 --- a/src/egl/main/egldisplay.c +++ b/src/egl/main/egldisplay.c @@ -96,6 +96,30 @@ _eglLookupDisplay(EGLDisplay dpy) } +/** + * Find the display corresponding to the specified native display id in all + * linked displays. + */ +_EGLDisplay * +_eglFindDisplay(NativeDisplayType nativeDisplay) +{ + EGLuint key = _eglHashFirstEntry(_eglGlobal.Displays); + + /* Walk the hash table. Should switch to list if it is a problem. */ + 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. -- cgit v1.2.3