Add gdk_wayland_surface_get_preferred_transform

We want to render in the preferred transform, eventually.
This commit is contained in:
Matthias Clasen 2024-07-09 22:52:05 -04:00
parent dd4a6eca65
commit 275c4747f1
2 changed files with 15 additions and 0 deletions

View File

@ -18,6 +18,7 @@
#pragma once
#include "gdkprivate-wayland.h"
#include "gdkdihedralprivate.h"
typedef enum _PopupState
{
@ -89,6 +90,8 @@ struct _GdkWaylandSurface
uint32_t last_configure_serial;
int state_freeze_count;
uint32_t preferred_transform;
};
typedef struct _GdkWaylandSurfaceClass GdkWaylandSurfaceClass;
@ -128,6 +131,7 @@ void gdk_wayland_surface_thaw_state (GdkSurface *surface);
void gdk_wayland_surface_frame_callback (GdkSurface *surface,
uint32_t time);
GdkDihedral gdk_wayland_surface_get_preferred_transform (GdkSurface *surface);
#define GDK_TYPE_WAYLAND_DRAG_SURFACE (gdk_wayland_drag_surface_get_type ())
GType gdk_wayland_drag_surface_get_type (void) G_GNUC_CONST;

View File

@ -893,6 +893,7 @@ surface_preferred_buffer_transform (void *data,
uint32_t transform)
{
GdkSurface *surface = GDK_SURFACE (data);
GdkWaylandSurface *impl = GDK_WAYLAND_SURFACE (surface);
const char *transform_name[] = {
"normal", "90", "180", "270", "flipped", "flipped-90", "flipped-180", "flipped-270"
};
@ -900,6 +901,8 @@ surface_preferred_buffer_transform (void *data,
GDK_DISPLAY_DEBUG (gdk_surface_get_display (surface), EVENTS,
"preferred buffer transform, surface %p transform %s",
surface, transform_name[transform]);
impl->preferred_transform = transform;
}
static const struct wl_surface_listener surface_listener = {
@ -1432,6 +1435,14 @@ gdk_wayland_surface_ensure_wl_egl_window (GdkSurface *surface)
}
}
GdkDihedral
gdk_wayland_surface_get_preferred_transform (GdkSurface *surface)
{
GdkWaylandSurface *impl = GDK_WAYLAND_SURFACE (surface);
return (GdkDihedral) impl->preferred_transform;
}
/* }}} */
/* {{{ Surface API */