diff options
author | Emil Velikov <[email protected]> | 2016-08-25 15:52:58 +0100 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2016-10-14 12:53:39 +0100 |
commit | 284795616a76787447ebf7db8b93d4b90073ccf5 (patch) | |
tree | a0fd1031f2badc60559bacf3f47bf6948d6efd6c /src/egl | |
parent | d81ba763e38b726054dca5b59671ffa0166461b4 (diff) |
egl/drm: set eglError and provide an error message on failure
v2: Remove gratuitous newline/semicolon (Eric)
Signed-off-by: Emil Velikov <[email protected]>
Reviewed-by: Eric Engestrom <[email protected]>
Diffstat (limited to 'src/egl')
-rw-r--r-- | src/egl/drivers/dri2/platform_drm.c | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/egl/drivers/dri2/platform_drm.c b/src/egl/drivers/dri2/platform_drm.c index 168c9dc2c68..ea1a7f12643 100644 --- a/src/egl/drivers/dri2/platform_drm.c +++ b/src/egl/drivers/dri2/platform_drm.c @@ -657,6 +657,7 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp) { struct dri2_egl_display *dri2_dpy; struct gbm_device *gbm; + const char *err; int fd = -1; loader_set_logger(_eglLog); @@ -677,20 +678,28 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp) fd = loader_open_device("/dev/dri/card0"); dri2_dpy->own_device = 1; gbm = gbm_create_device(fd); - if (gbm == NULL) + if (gbm == NULL) { + err = "DRI2: failed to create gbm device"; goto cleanup; + } } else { fd = fcntl(gbm_device_get_fd(gbm), F_DUPFD_CLOEXEC, 3); - if (fd < 0) + if (fd < 0) { + err = "DRI2: failed to fcntl() existing gbm device"; goto cleanup; + } } - if (strcmp(gbm_device_get_backend_name(gbm), "drm") != 0) + if (strcmp(gbm_device_get_backend_name(gbm), "drm") != 0) { + err = "DRI2: gbm device using incorrect/incompatible backend"; goto cleanup; + } dri2_dpy->gbm_dri = gbm_dri_device(gbm); - if (dri2_dpy->gbm_dri->base.type != GBM_DRM_DRIVER_TYPE_DRI) + if (dri2_dpy->gbm_dri->base.type != GBM_DRM_DRIVER_TYPE_DRI) { + err = "DRI2: gbm device using incorrect/incompatible type"; goto cleanup; + } dri2_dpy->fd = fd; dri2_dpy->driver_name = strdup(dri2_dpy->gbm_dri->base.driver_name); @@ -721,7 +730,7 @@ dri2_initialize_drm(_EGLDriver *drv, _EGLDisplay *disp) dri2_setup_screen(disp); if (!drm_add_configs_for_visuals(drv, disp)) { - _eglError(EGL_NOT_INITIALIZED, "DRI2: failed to add configs"); + err = "DRI2: failed to add configs"; goto cleanup; } @@ -747,5 +756,5 @@ cleanup: free(dri2_dpy); disp->DriverData = NULL; - return EGL_FALSE; + return _eglError(EGL_NOT_INITIALIZED, err); } |