Untitled
unknown
plain_text
10 months ago
705 B
6
Indexable
// After opening dmabuf_fd
void *buffer = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, dmabuf_fd, 0);
if (buffer == MAP_FAILED) {
wlr_log_errno(WLR_ERROR, "Failed to mmap udmabuf");
close(dmabuf_fd);
goto err_memfd;
}
// Ensure cleanup in buffer_destroy
static void buffer_destroy(struct wlr_buffer *wlr_buffer) {
struct wlr_udmabuf_buffer *buffer = wl_container_of(wlr_buffer, buffer, base);
munmap(buffer->mapped_data, buffer->size);
wlr_dmabuf_attributes_finish(&buffer->dmabuf);
close(buffer->shm.fd);
free(buffer);
}
// Add to struct wlr_udmabuf_buffer
struct wlr_udmabuf_buffer {
// ... existing fields ...
void *mapped_data;
};Editor is loading...
Leave a Comment