|
|
|
@@ -152,11 +152,15 @@ xa_tracker_create(int drm_fd) |
|
|
|
struct xa_tracker *xa = calloc(1, sizeof(struct xa_tracker)); |
|
|
|
enum xa_surface_type stype; |
|
|
|
unsigned int num_formats; |
|
|
|
int fd = -1; |
|
|
|
|
|
|
|
if (!xa) |
|
|
|
return NULL; |
|
|
|
|
|
|
|
if (pipe_loader_drm_probe_fd(&xa->dev, dup(drm_fd))) |
|
|
|
if (drm_fd < 0 || (fd = dup(drm_fd)) < 0) |
|
|
|
goto out_no_fd; |
|
|
|
|
|
|
|
if (pipe_loader_drm_probe_fd(&xa->dev, fd)) |
|
|
|
xa->screen = pipe_loader_create_screen(xa->dev); |
|
|
|
|
|
|
|
if (!xa->screen) |
|
|
|
@@ -208,6 +212,9 @@ xa_tracker_create(int drm_fd) |
|
|
|
out_no_screen: |
|
|
|
if (xa->dev) |
|
|
|
pipe_loader_release(&xa->dev, 1); |
|
|
|
fd = -1; |
|
|
|
out_no_fd: |
|
|
|
close(fd); |
|
|
|
free(xa); |
|
|
|
return NULL; |
|
|
|
} |