summaryrefslogtreecommitdiff
path: root/gdk
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2023-02-14 13:44:39 -0500
committerMatthias Clasen <mclasen@redhat.com>2023-02-14 19:07:01 -0500
commit0eb791eaaa2672ffdb69c4bca47125aea6b1c2ba (patch)
tree8b64fcfcb092af4aaa4f80b30ef05ae2fd2add1f /gdk
parentf1311dc0537fae5db3cdb176427f11873fd66df3 (diff)
downloadgtk+-0eb791eaaa2672ffdb69c4bca47125aea6b1c2ba.tar.gz
Make mask nodes more versatile
Add a GskMaskMode enumeration and implement it in the GL and cairo renderers.
Diffstat (limited to 'gdk')
-rw-r--r--gdk/wayland/gdkglcontext-wayland.c6
-rw-r--r--gdk/wayland/gdksurface-wayland.c4
2 files changed, 9 insertions, 1 deletions
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