From 46df195b2a2e3fe7b5408842f50bb14c45953f4b Mon Sep 17 00:00:00 2001
From: Ethan Lee <[EMAIL REDACTED]>
Date: Sun, 18 Apr 2021 09:33:06 -0400
Subject: [PATCH] wayland: Implement GetDisplayBounds
---
src/video/wayland/SDL_waylandvideo.c | 16 ++++++++++++++++
src/video/wayland/SDL_waylandvideo.h | 2 +-
2 files changed, 17 insertions(+), 1 deletion(-)
diff --git a/src/video/wayland/SDL_waylandvideo.c b/src/video/wayland/SDL_waylandvideo.c
index ea5e5b283..b0cc5a88c 100644
--- a/src/video/wayland/SDL_waylandvideo.c
+++ b/src/video/wayland/SDL_waylandvideo.c
@@ -62,6 +62,8 @@ static void
Wayland_GetDisplayModes(_THIS, SDL_VideoDisplay *sdl_display);
static int
Wayland_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode);
+static int
+Wayland_GetDisplayBounds(_THIS, SDL_VideoDisplay *display, SDL_Rect *rect);
static void
Wayland_VideoQuit(_THIS);
@@ -179,6 +181,7 @@ Wayland_CreateDevice(int devindex)
device->VideoQuit = Wayland_VideoQuit;
device->SetDisplayMode = Wayland_SetDisplayMode;
device->GetDisplayModes = Wayland_GetDisplayModes;
+ device->GetDisplayBounds = Wayland_GetDisplayBounds;
device->GetWindowWMInfo = Wayland_GetWindowWMInfo;
device->SuspendScreenSaver = Wayland_SuspendScreenSaver;
@@ -251,6 +254,8 @@ display_handle_geometry(void *data,
{
SDL_WaylandOutputData *driverdata = data;
+ driverdata->x = x;
+ driverdata->y = y;
driverdata->placeholder.name = SDL_strdup(model);
driverdata->transform = transform;
}
@@ -513,6 +518,17 @@ Wayland_SetDisplayMode(_THIS, SDL_VideoDisplay *display, SDL_DisplayMode *mode)
return SDL_Unsupported();
}
+static int
+Wayland_GetDisplayBounds(_THIS, SDL_VideoDisplay *display, SDL_Rect *rect)
+{
+ SDL_WaylandOutputData *driverdata = (SDL_WaylandOutputData *)display->driverdata;
+ rect->x = driverdata->x;
+ rect->y = driverdata->y;
+ rect->w = display->current_mode.w;
+ rect->h = display->current_mode.h;
+ return 0;
+}
+
void
Wayland_VideoQuit(_THIS)
{
diff --git a/src/video/wayland/SDL_waylandvideo.h b/src/video/wayland/SDL_waylandvideo.h
index 1c01dfd9d..91dac3654 100644
--- a/src/video/wayland/SDL_waylandvideo.h
+++ b/src/video/wayland/SDL_waylandvideo.h
@@ -93,7 +93,7 @@ typedef struct {
typedef struct {
struct wl_output *output;
float scale_factor;
- int width, height, refresh, transform;
+ int x, y, width, height, refresh, transform;
SDL_VideoDisplay placeholder;
SDL_bool done;
} SDL_WaylandOutputData;