render/shm_allocator: make wlr_shm_allocator_create return a wlr_allocator

This commit is contained in:
Simon Zeni 2021-04-21 21:29:33 -04:00 committed by Simon Ser
parent c75aa71816
commit a8c91fbac9
4 changed files with 12 additions and 15 deletions

View file

@ -452,21 +452,19 @@ struct wlr_backend *wlr_wl_backend_create(struct wl_display *display,
goto error_drm_fd; goto error_drm_fd;
} }
struct wlr_allocator *alloc = wlr_gbm_allocator_create(drm_fd); wl->allocator = wlr_gbm_allocator_create(drm_fd);
if (alloc == NULL) { if (wl->allocator == NULL) {
wlr_log(WLR_ERROR, "Failed to create GBM allocator"); wlr_log(WLR_ERROR, "Failed to create GBM allocator");
close(drm_fd); close(drm_fd);
goto error_drm_fd; goto error_drm_fd;
} }
wl->allocator = alloc;
} else { } else {
wlr_log(WLR_DEBUG, "No render node found, falling back to shared memory"); wlr_log(WLR_DEBUG, "No render node found, falling back to shared memory");
struct wlr_shm_allocator *shm_alloc = wlr_shm_allocator_create(); wl->allocator = wlr_shm_allocator_create();
if (shm_alloc == NULL) { if (wl->allocator == NULL) {
wlr_log(WLR_ERROR, "Failed to create shared memory allocator"); wlr_log(WLR_ERROR, "Failed to create shared memory allocator");
goto error_remote_display_src; goto error_remote_display_src;
} }
wl->allocator = &shm_alloc->base;
} }
wl->renderer = wlr_renderer_autocreate(&wl->backend); wl->renderer = wlr_renderer_autocreate(&wl->backend);

View file

@ -622,22 +622,20 @@ struct wlr_backend *wlr_x11_backend_create(struct wl_display *display,
goto error_event; goto error_event;
} }
struct wlr_allocator *alloc = wlr_gbm_allocator_create(drm_fd); x11->allocator = wlr_gbm_allocator_create(drm_fd);
if (alloc == NULL) { if (x11->allocator == NULL) {
wlr_log(WLR_ERROR, "Failed to create GBM allocator"); wlr_log(WLR_ERROR, "Failed to create GBM allocator");
close(drm_fd); close(drm_fd);
goto error_event; goto error_event;
} }
x11->allocator = alloc;
pixmap_formats = &x11->dri3_formats; pixmap_formats = &x11->dri3_formats;
} else if (x11->have_shm) { } else if (x11->have_shm) {
x11->drm_fd = -1; x11->drm_fd = -1;
struct wlr_shm_allocator *shm_alloc = wlr_shm_allocator_create(); x11->allocator = wlr_shm_allocator_create();
if (shm_alloc == NULL) { if (x11->allocator == NULL) {
wlr_log(WLR_ERROR, "Failed to create shared memory allocator"); wlr_log(WLR_ERROR, "Failed to create shared memory allocator");
goto error_event; goto error_event;
} }
x11->allocator = &shm_alloc->base;
pixmap_formats = &x11->shm_formats; pixmap_formats = &x11->shm_formats;
} else { } else {
wlr_log(WLR_ERROR, wlr_log(WLR_ERROR,

View file

@ -18,6 +18,6 @@ struct wlr_shm_allocator {
/** /**
* Creates a new shared memory allocator. * Creates a new shared memory allocator.
*/ */
struct wlr_shm_allocator *wlr_shm_allocator_create(void); struct wlr_allocator *wlr_shm_allocator_create(void);
#endif #endif

View file

@ -98,12 +98,13 @@ static const struct wlr_allocator_interface allocator_impl = {
.create_buffer = allocator_create_buffer, .create_buffer = allocator_create_buffer,
}; };
struct wlr_shm_allocator *wlr_shm_allocator_create(void) { struct wlr_allocator *wlr_shm_allocator_create(void) {
struct wlr_shm_allocator *allocator = calloc(1, sizeof(*allocator)); struct wlr_shm_allocator *allocator = calloc(1, sizeof(*allocator));
if (allocator == NULL) { if (allocator == NULL) {
return NULL; return NULL;
} }
wlr_allocator_init(&allocator->base, &allocator_impl); wlr_allocator_init(&allocator->base, &allocator_impl);
return allocator; wlr_log(WLR_DEBUG, "Created shm allocator");
return &allocator->base;
} }