diff --git a/src/backend/wayland/buffer.c b/src/backend/wayland/buffer.c index 2280bd7d..04ba04b1 100644 --- a/src/backend/wayland/buffer.c +++ b/src/backend/wayland/buffer.c @@ -10,8 +10,8 @@ void MwLLWaylandFramebufferSetup(struct _MwLLWayland* wayland) { memset(wayland->framebuffer.buf_back, 255, wayland->framebuffer.buf_size); if(wayland->configured) wl_surface_attach(wayland->framebuffer.surface, wayland->framebuffer.shm_buffer, 0, 0); - if(wayland->framebuffer.fifo) - wp_fifo_v1_set_barrier(wayland->framebuffer.fifo); + // if(wayland->framebuffer.fifo) + // wp_fifo_v1_set_barrier(wayland->framebuffer.fifo); wl_surface_commit(wayland->framebuffer.surface); @@ -25,11 +25,13 @@ void MwLLWaylandFramebufferDestroy(struct _MwLLWayland* wayland) { }; void MwLLWaylandBackbufferSetup(struct _MwLLWayland* wayland) { + MwU32 w = wayland->ww; + MwU32 h = wayland->wh; + if(wayland->type != MwLL_WAYLAND_TOPLEVEL) { return; } - MwU32 w = wayland->ww; - MwU32 h = wayland->wh; + if(!wayland->has_decorations && wayland->do_csd) { w += (CSD_BORDER_FRAME_LEFT + CSD_BORDER_FRAME_RIGHT); h += (CSD_BORDER_FRAME_TOP + CSD_BORDER_FRAME_BOTTOM); @@ -140,8 +142,8 @@ void MwLLWaylandFramebufferResize(struct _MwLLWayland* wayland) { if(wayland->configured) wl_surface_attach(wayland->framebuffer.surface, wayland->framebuffer.shm_buffer, 0, 0); - if(wayland->framebuffer.fifo) - wp_fifo_v1_set_barrier(wayland->framebuffer.fifo); + // if(wayland->framebuffer.fifo) + // wp_fifo_v1_set_barrier(wayland->framebuffer.fifo); wl_surface_commit(wayland->framebuffer.surface); @@ -183,8 +185,8 @@ void MwLLWaylandBufferUpdate(MwLL self, struct _MwLLWaylandShmBuffer* buffer) { if(self->wayland.configured) { wl_surface_attach(buffer->surface, buffer->shm_buffer, 0, 0); } - if(buffer->fifo) - wp_fifo_v1_wait_barrier(buffer->fifo); + // if(buffer->fifo) + // wp_fifo_v1_wait_barrier(buffer->fifo); wl_surface_commit(buffer->surface); } } diff --git a/src/backend/wayland/wayland.c b/src/backend/wayland/wayland.c index fea04702..4ab9a73f 100644 --- a/src/backend/wayland/wayland.c +++ b/src/backend/wayland/wayland.c @@ -202,21 +202,18 @@ static void xdg_toplevel_configure(void* data, // } // } - if(self->wayland.resizing == 0) { - xdg_surface_set_window_geometry(self->wayland.toplevel->xdg_surface, 0, 0, self->wayland.ww, self->wayland.wh); + xdg_surface_set_window_geometry(self->wayland.toplevel->xdg_surface, 0, 0, self->wayland.ww, self->wayland.wh); + MwLLWaylandFramebufferResize(&self->wayland); + MwLLWaylandBackbufferResize(&self->wayland); - MwLLWaylandFramebufferResize(&self->wayland); + MwLLWaylandRegionSetup(self); + MwLLDispatch(self, resize, NULL); - MwLLWaylandRegionSetup(self); - MwLLDispatch(self, resize, NULL); + recursive_dispatch_resize(self); - recursive_dispatch_resize(self); - - if(self->wayland.pointer_constrained) { - zwp_locked_pointer_v1_set_cursor_position_hint(self->wayland.locked_pointer, 0, CSD_BORDER_FRAME_TOP); - wl_surface_commit(self->wayland.framebuffer.surface); - } - self->wayland.resizing = 1; + if(self->wayland.pointer_constrained) { + zwp_locked_pointer_v1_set_cursor_position_hint(self->wayland.locked_pointer, 0, CSD_BORDER_FRAME_TOP); + wl_surface_commit(self->wayland.framebuffer.surface); } }; @@ -1414,9 +1411,10 @@ static void MwLLEndDrawImpl(MwLL handle) { if(handle->wayland.configured) { if(handle->wayland.type == MwLL_WAYLAND_TOPLEVEL) { MwLLWaylandBufferUpdate(handle, &handle->wayland.backbuffer); + MwLLWaylandBackbufferResize(&handle->wayland); } - MwLLWaylandBufferUpdate(handle, &handle->wayland.framebuffer); + MwLLWaylandFramebufferResize(&handle->wayland); } }