wayland: we don't need wayland shms for the back buffer (anymore)
All checks were successful
pyrite-dev/milsko/pipeline/head This commit looks good

This commit is contained in:
IoI_xD 2026-04-08 14:45:55 -07:00
commit 5462103815
2 changed files with 6 additions and 28 deletions

View file

@ -216,8 +216,6 @@ struct _MwLLWaylandShmBuffer {
struct wl_shm* shm;
struct wl_shm_pool* shm_pool;
struct wl_buffer* shm_buffer;
struct wl_shm_pool* shm_pool_back;
struct wl_buffer* shm_buffer_back;
struct wl_surface* surface;
struct wl_output* output;
@ -225,7 +223,6 @@ struct _MwLLWaylandShmBuffer {
MwU32* buf_back;
MwU64 buf_size;
int fd;
int fd_back;
MwBool setup;
// pixman_image_t* pixman_fb_front;

View file

@ -1277,8 +1277,7 @@ static void buffer_setup(struct _MwLLWaylandShmBuffer* buffer, MwU32 width, MwU3
buffer->buf_size = (width * height * 4) * sizeof(MwU32);
buffer->fd = mkstemp(temp_name);
buffer->fd_back = mkstemp(temp_name_back);
buffer->fd = mkstemp(temp_name);
unlink(temp_name);
unlink(temp_name_back);
@ -1288,38 +1287,21 @@ static void buffer_setup(struct _MwLLWaylandShmBuffer* buffer, MwU32 width, MwU3
close(buffer->fd);
return;
}
if(posix_fallocate(buffer->fd_back, 0, buffer->buf_size) != 0) {
printf("failure setting up wl_shm: could not fallocate. %s.\n", strerror(errno));
close(buffer->fd_back);
return;
}
if(ftruncate(buffer->fd, buffer->buf_size) != 0) {
printf("failure setting up wl_shm: could not truncate. %s.\n", strerror(errno));
close(buffer->fd);
return;
}
if(ftruncate(buffer->fd_back, buffer->buf_size) != 0) {
printf("failure setting up wl_shm: could not truncate. %s.\n", strerror(errno));
close(buffer->fd_back);
return;
}
buffer->buf = mmap(NULL, buffer->buf_size, PROT_WRITE, MAP_SHARED, buffer->fd, 0);
buffer->buf_back = mmap(NULL, buffer->buf_size, PROT_WRITE, MAP_SHARED, buffer->fd_back, 0);
buffer->buf_back = malloc(buffer->buf_size);
fsync(buffer->fd);
fsync(buffer->fd_back);
if(!(buffer->shm_pool = wl_shm_create_pool(buffer->shm, buffer->fd, buffer->buf_size))) {
printf("failure setting up wl_shm: could not create pool.\n");
}
if(!(buffer->shm_pool_back = wl_shm_create_pool(buffer->shm, buffer->fd_back, buffer->buf_size))) {
printf("failure setting up wl_shm: could not create pool.\n");
}
buffer->shm_buffer = wl_shm_pool_create_buffer(buffer->shm_pool, 0, width, height, stride, WL_SHM_FORMAT_ARGB8888);
buffer->shm_buffer_back = wl_shm_pool_create_buffer(buffer->shm_pool_back, 0, width, height, stride, WL_SHM_FORMAT_ARGB8888);
pixman_color_t col = {0, 0, 0, 0xffff};
buffer->shm_buffer = wl_shm_pool_create_buffer(buffer->shm_pool, 0, width, height, stride, WL_SHM_FORMAT_ARGB8888);
buffer->pixman_fb = pixman_image_create_bits(PIXMAN_a8r8g8b8,
width, height, buffer->buf_back, stride);
@ -1335,11 +1317,10 @@ static void buffer_destroy(struct _MwLLWaylandShmBuffer* buffer) {
return;
}
if(buffer->shm_buffer) wl_buffer_destroy(buffer->shm_buffer);
if(buffer->shm_buffer_back) wl_buffer_destroy(buffer->shm_buffer_back);
if(buffer->shm_pool) wl_shm_pool_destroy(buffer->shm_pool);
if(buffer->shm_pool_back) wl_shm_pool_destroy(buffer->shm_pool_back);
munmap(buffer->buf, buffer->buf_size);
free(buffer->buf_back);
close(buffer->fd);
close(buffer->fd_back);
pixman_image_unref(buffer->pixman_fb);
buffer->setup = MwFALSE;
@ -2292,7 +2273,7 @@ static void MwLLSetIconImpl(MwLL handle, MwLLPixmap pixmap) {
if(handle->wayland.configured) update_buffer(handle, handle->wayland.icon);
xdg_toplevel_icon_v1_add_buffer(icon, handle->wayland.icon->shm_buffer_back, 1);
xdg_toplevel_icon_v1_add_buffer(icon, handle->wayland.icon->shm_buffer, 1);
xdg_toplevel_icon_manager_v1_set_icon(icon_manager, handle->wayland.toplevel->xdg_top_level, icon);
}