diff --git a/hw/xwayland/xwayland-glamor-gbm.c b/hw/xwayland/xwayland-glamor-gbm.c index c7731e2c8ef372bd15846efc8c630562655d5bf4..396188070d17a7c87aac8aa122969dee30a5672e 100644 --- a/hw/xwayland/xwayland-glamor-gbm.c +++ b/hw/xwayland/xwayland-glamor-gbm.c @@ -117,21 +117,6 @@ wl_drm_format_for_depth(int depth) } } -static char -is_fd_render_node(int fd) -{ - struct stat render; - - if (fstat(fd, &render)) - return 0; - if (!S_ISCHR(render.st_mode)) - return 0; - if (render.st_rdev & 0x80) - return 1; - - return 0; -} - static char is_device_path_render_node (const char *device_path) { @@ -142,7 +127,7 @@ is_device_path_render_node (const char *device_path) if (fd < 0) return 0; - is_render_node = is_fd_render_node(fd); + is_render_node = (drmGetNodeTypeFromFd(fd) == DRM_NODE_RENDER); close(fd); return is_render_node; @@ -782,7 +767,7 @@ xwl_drm_handle_device(void *data, struct wl_drm *drm, const char *device) return; } - if (is_fd_render_node(xwl_gbm->drm_fd)) { + if (drmGetNodeTypeFromFd(xwl_gbm->drm_fd) == DRM_NODE_RENDER) { xwl_gbm->fd_render_node = 1; xwl_screen->expecting_event--; } else {