From 46df195b2a2e3fe7b5408842f50bb14c45953f4b Mon Sep 17 00:00:00 2001 From: Ethan Lee 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;