Chia-I Wu wrote:
> 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 <[email protected]>
> ---
> 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)
Put some comments on the function, please.
> +{
> + 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);
>
------------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/mesa3d-dev