mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-04-19 06:47:02 -04:00
render: replace wlr_renderer_get_drm_fd() with drm_dev_id
wlr_renderer_get_drm_fd() forces the renderer to open the DRM node and keep the FD around for no good reason. Instead, use dev_t to refer to a DRM device. This also removes footguns related to FD ownership.
This commit is contained in:
parent
ebef710746
commit
986a2d9f66
13 changed files with 91 additions and 146 deletions
|
|
@ -201,15 +201,14 @@ static void handle_display_destroy(struct wl_listener *listener, void *data) {
|
|||
|
||||
struct wlr_drm *wlr_drm_create(struct wl_display *display,
|
||||
struct wlr_renderer *renderer) {
|
||||
int drm_fd = wlr_renderer_get_drm_fd(renderer);
|
||||
if (drm_fd < 0) {
|
||||
wlr_log(WLR_ERROR, "Failed to get DRM FD from renderer");
|
||||
if (renderer->drm_dev_id == NULL) {
|
||||
wlr_log(WLR_ERROR, "Failed to get DRM device from renderer");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
drmDevice *dev = NULL;
|
||||
if (drmGetDevice2(drm_fd, 0, &dev) != 0) {
|
||||
wlr_log(WLR_ERROR, "drmGetDevice2 failed");
|
||||
if (drmGetDeviceFromDevId(*renderer->drm_dev_id, 0, &dev) != 0) {
|
||||
wlr_log(WLR_ERROR, "drmGetDeviceFromDevId failed");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1087,16 +1087,11 @@ bool wlr_linux_dmabuf_feedback_v1_init_with_options(struct wlr_linux_dmabuf_feed
|
|||
|
||||
*feedback = (struct wlr_linux_dmabuf_feedback_v1){0};
|
||||
|
||||
int renderer_drm_fd = wlr_renderer_get_drm_fd(options->main_renderer);
|
||||
if (renderer_drm_fd < 0) {
|
||||
wlr_log(WLR_ERROR, "Failed to get renderer DRM FD");
|
||||
goto error;
|
||||
}
|
||||
dev_t renderer_dev;
|
||||
if (!devid_from_fd(renderer_drm_fd, &renderer_dev)) {
|
||||
if (options->main_renderer->drm_dev_id == NULL) {
|
||||
goto error;
|
||||
}
|
||||
|
||||
dev_t renderer_dev = *options->main_renderer->drm_dev_id;
|
||||
feedback->main_device = renderer_dev;
|
||||
|
||||
const struct wlr_drm_format_set *renderer_formats =
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue