[Mesa-dev] [PATCH 07/30] egl/dri2: call static functions directly, not via _EGLDriver::API

Emil Velikov emil.l.velikov at gmail.com
Thu Aug 25 16:18:29 UTC 2016


From: Emil Velikov <emil.velikov at collabora.com>

The indirection is meant to be used by the core EGL implementation in
main. Not in the drivers themselves.

Move the dri2_destroy_surface definition to avoid forward declaration of
the static function.

Signed-off-by: Emil Velikov <emil.velikov at collabora.com>
---
XXX: Aren't we forgetting to Unlink the surface/ctx ?
XXX: How about sync/image ? We seems to be leaking those on
eglTerminate, since we don't iterate and Unlink/API.Destroy over them in
_eglReleaseDisplayResources.
---
 src/egl/drivers/dri2/egl_dri2.c | 28 ++++++++++++++--------------
 1 file changed, 14 insertions(+), 14 deletions(-)

diff --git a/src/egl/drivers/dri2/egl_dri2.c b/src/egl/drivers/dri2/egl_dri2.c
index e120eaa..89d2966 100644
--- a/src/egl/drivers/dri2/egl_dri2.c
+++ b/src/egl/drivers/dri2/egl_dri2.c
@@ -1226,6 +1226,17 @@ dri2_destroy_context(_EGLDriver *drv, _EGLDisplay *disp, _EGLContext *ctx)
    return EGL_TRUE;
 }
 
+static EGLBoolean
+dri2_destroy_surface(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf)
+{
+   struct dri2_egl_display *dri2_dpy = dri2_egl_display(dpy);
+
+   if (!_eglPutSurface(surf))
+      return EGL_TRUE;
+
+   return dri2_dpy->vtbl->destroy_surface(drv, dpy, surf);
+}
+
 /**
  * Called via eglMakeCurrent(), drv->API.MakeCurrent().
  */
@@ -1269,15 +1280,15 @@ dri2_make_current(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *dsurf,
 
    if (unbind || dri2_dpy->core->bindContext(cctx, ddraw, rdraw)) {
       if (old_dsurf)
-         drv->API.DestroySurface(drv, disp, old_dsurf);
+         dri2_destroy_surface(drv, disp, old_dsurf);
       if (old_rsurf)
-         drv->API.DestroySurface(drv, disp, old_rsurf);
+         dri2_destroy_surface(drv, disp, old_rsurf);
 
       if (!unbind)
          dri2_dpy->ref_count++;
       if (old_ctx) {
          EGLDisplay old_disp = _eglGetDisplayHandle(old_ctx->Resource.Display);
-         drv->API.DestroyContext(drv, disp, old_ctx);
+         dri2_destroy_context(drv, disp, old_ctx);
          dri2_display_release(old_disp);
       }
 
@@ -1353,17 +1364,6 @@ dri2_create_pbuffer_surface(_EGLDriver *drv, _EGLDisplay *dpy,
 }
 
 static EGLBoolean
-dri2_destroy_surface(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf)
-{
-   struct dri2_egl_display *dri2_dpy = dri2_egl_display(dpy);
-
-   if (!_eglPutSurface(surf))
-      return EGL_TRUE;
-
-   return dri2_dpy->vtbl->destroy_surface(drv, dpy, surf);
-}
-
-static EGLBoolean
 dri2_swap_interval(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf,
                    EGLint interval)
 {
-- 
2.9.0



More information about the mesa-dev mailing list