summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEmil Velikov <[email protected]>2017-05-11 17:22:35 +0100
committerEmil Velikov <[email protected]>2017-05-29 16:50:00 +0100
commitc8d366bab29b36641172d8a2847ad9e7f90779e2 (patch)
tree9de44cf5ffe4648b6965c2655612d6ecb16c35e7
parent7ec07beedf486d8ab901ea3e3e3a87768a051e44 (diff)
egl/surfaceless: make use of the dri2_display_destroy() helper
Cc: Chad Versace <[email protected]> Signed-off-by: Emil Velikov <[email protected]> Reviewed-by: Gurchetan Singh <[email protected]> Tested-by: Rob Herring <[email protected]>
-rw-r--r--src/egl/drivers/dri2/platform_surfaceless.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/src/egl/drivers/dri2/platform_surfaceless.c b/src/egl/drivers/dri2/platform_surfaceless.c
index 7e887de09da..f001eda369c 100644
--- a/src/egl/drivers/dri2/platform_surfaceless.c
+++ b/src/egl/drivers/dri2/platform_surfaceless.c
@@ -279,6 +279,7 @@ dri2_initialize_surfaceless(_EGLDriver *drv, _EGLDisplay *disp)
if (!dri2_dpy)
return _eglError(EGL_BAD_ALLOC, "eglInitialize");
+ dri2_dpy->fd = -1;
disp->DriverData = (void *) dri2_dpy;
const int limit = 64;
@@ -301,25 +302,27 @@ dri2_initialize_surfaceless(_EGLDriver *drv, _EGLDisplay *disp)
break;
}
free(dri2_dpy->driver_name);
+ dri2_dpy->driver_name = NULL;
}
close(dri2_dpy->fd);
+ dri2_dpy->fd = -1;
}
if (!driver_loaded) {
err = "DRI2: failed to load driver";
- goto cleanup_display;
+ goto cleanup;
}
dri2_dpy->loader_extensions = image_loader_extensions;
if (!dri2_create_screen(disp)) {
err = "DRI2: failed to create screen";
- goto cleanup_driver;
+ goto cleanup;
}
if (!surfaceless_add_configs_for_visuals(drv, disp)) {
err = "DRI2: failed to add configs";
- goto cleanup_screen;
+ goto cleanup;
}
/* Fill vtbl last to prevent accidentally calling virtual function during
@@ -329,16 +332,7 @@ dri2_initialize_surfaceless(_EGLDriver *drv, _EGLDisplay *disp)
return EGL_TRUE;
-cleanup_screen:
- dri2_dpy->core->destroyScreen(dri2_dpy->dri_screen);
-
-cleanup_driver:
- dlclose(dri2_dpy->driver);
- free(dri2_dpy->driver_name);
- close(dri2_dpy->fd);
-cleanup_display:
- free(dri2_dpy);
- disp->DriverData = NULL;
-
+cleanup:
+ dri2_display_destroy(disp);
return _eglError(EGL_NOT_INITIALIZED, err);
}