From 0eb791eaaa2672ffdb69c4bca47125aea6b1c2ba Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 14 Feb 2023 13:44:39 -0500 Subject: Make mask nodes more versatile Add a GskMaskMode enumeration and implement it in the GL and cairo renderers. --- gdk/wayland/gdkglcontext-wayland.c | 6 ++++++ gdk/wayland/gdksurface-wayland.c | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'gdk/wayland') diff --git a/gdk/wayland/gdkglcontext-wayland.c b/gdk/wayland/gdkglcontext-wayland.c index e7341d4fe6..44e15fa0fd 100644 --- a/gdk/wayland/gdkglcontext-wayland.c +++ b/gdk/wayland/gdkglcontext-wayland.c @@ -25,6 +25,7 @@ #include "gdkdisplay-wayland.h" #include "gdksurface-wayland.h" +#include "gdksurface-wayland-private.h" #include "gdkwaylanddisplay.h" #include "gdkwaylandglcontext.h" @@ -60,10 +61,15 @@ gdk_wayland_gl_context_end_frame (GdkDrawContext *draw_context, cairo_region_t *painted) { GdkSurface *surface = gdk_draw_context_get_surface (draw_context); + GdkWaylandSurface *impl = GDK_WAYLAND_SURFACE (surface); + int dx = impl->pending_buffer_offset_x; + int dy = impl->pending_buffer_offset_y; gdk_wayland_surface_sync (surface); gdk_wayland_surface_request_frame (surface); + wl_surface_offset (impl->display_server.wl_surface, dx, dy); + GDK_DRAW_CONTEXT_CLASS (gdk_wayland_gl_context_parent_class)->end_frame (draw_context, painted); gdk_wayland_surface_notify_committed (surface); diff --git a/gdk/wayland/gdksurface-wayland.c b/gdk/wayland/gdksurface-wayland.c index 62115ab850..8e34132bcc 100644 --- a/gdk/wayland/gdksurface-wayland.c +++ b/gdk/wayland/gdksurface-wayland.c @@ -229,7 +229,7 @@ gdk_wayland_surface_update_size (GdkSurface *surface, if (impl->display_server.egl_window) wl_egl_window_resize (impl->display_server.egl_window, width * scale, height * scale, 0, 0); - if (impl->display_server.wl_surface) + if (impl->display_server.wl_surface && scale_changed) wl_surface_set_buffer_scale (impl->display_server.wl_surface, scale); gdk_surface_invalidate_rect (surface, NULL); @@ -588,6 +588,7 @@ gdk_wayland_surface_sync_offset (GdkSurface *surface) WL_SURFACE_OFFSET_SINCE_VERSION) return; +#if 0 if (impl->pending_buffer_offset_x == 0 && impl->pending_buffer_offset_y == 0) return; @@ -597,6 +598,7 @@ gdk_wayland_surface_sync_offset (GdkSurface *surface) impl->pending_buffer_offset_y); impl->pending_buffer_offset_x = 0; impl->pending_buffer_offset_y = 0; +#endif } void -- cgit v1.2.1