From 1d74e36258e33c5e063076135123ebdd1e7d8337 Mon Sep 17 00:00:00 2001 From: Riccardo Canalicchio Date: Tue, 19 Oct 2021 02:10:45 -0400 Subject: [PATCH] wayland backend:re-attach surface on ExposeRect --- Source/cairo/WaylandCairoSurface.m | 16 ++++++---------- Source/wayland/WaylandServer.m | 2 -- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/Source/cairo/WaylandCairoSurface.m b/Source/cairo/WaylandCairoSurface.m index 1c00567..f8d709e 100644 --- a/Source/cairo/WaylandCairoSurface.m +++ b/Source/cairo/WaylandCairoSurface.m @@ -214,18 +214,14 @@ create_shm_buffer(struct window *window) NSWarnMLog(@"...cairo initial window error status: %s\n", cairo_status_to_string(cairo_surface_status(_surface))); } - + window->buffer_needs_attach = YES; if (window->configured) { - if(window->buffer_needs_attach) { - window->buffer_needs_attach = NO; - wl_surface_attach(window->surface, window->buffer, 0, 0); - } - wl_surface_damage(window->surface, 0, 0, width, height); + window->buffer_needs_attach = NO; + wl_surface_attach(window->surface, window->buffer, 0, 0); + wl_surface_damage(window->surface, 0, 0, 1000, 1000); wl_surface_commit(window->surface); - //wl_display_dispatch_pending(window->wlconfig->display); - //wl_display_flush(window->wlconfig->display); - } else { - window->buffer_needs_attach = YES; + wl_display_dispatch_pending(window->wlconfig->display); + wl_display_flush(window->wlconfig->display); } NSDebugLog(@"[CairoSurface handleExposeRect end]"); diff --git a/Source/wayland/WaylandServer.m b/Source/wayland/WaylandServer.m index cbb8f91..7fe4c6a 100644 --- a/Source/wayland/WaylandServer.m +++ b/Source/wayland/WaylandServer.m @@ -1164,8 +1164,6 @@ int NSToWayland(struct window *window, int ns_y) xdg_wm_base_get_xdg_surface(wlconfig->wm_base, window->surface); window->toplevel = xdg_surface_get_toplevel(window->xdg_surface); - xdg_surface_add_listener(window->xdg_surface, - &xdg_surface_listener, window); xdg_surface_add_listener(window->xdg_surface, &xdg_surface_listener, window);