From 4003931ed9da8ecc820f23f862d11368b44625f3 Mon Sep 17 00:00:00 2001 From: John Lorentzson Date: Wed, 9 Apr 2025 15:11:18 +0200 Subject: [PATCH] Check that the framebuffer image matches expectations --- src/Backends/Rendering/Window/Software/X11.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/Backends/Rendering/Window/Software/X11.cpp b/src/Backends/Rendering/Window/Software/X11.cpp index 36827fc9..e5f8f0dc 100644 --- a/src/Backends/Rendering/Window/Software/X11.cpp +++ b/src/Backends/Rendering/Window/Software/X11.cpp @@ -31,6 +31,14 @@ static bool CheckShm() { return exists; } +bool checkImageOK(XImage* image) { + bool ok = true; + ok &= (image->width == screenWidth); + ok &= (image->bytes_per_line == screenWidth * 4); + ok &= (image->depth == 24 || image->depth == 32); + return ok; +} + void createFramebuffer() { gc = DefaultGC(xDisplay, DefaultScreen(xDisplay)); @@ -83,10 +91,15 @@ bool WindowBackend_Software_CreateWindow(const char *window_title, size_t screen XSetWMProtocols(xDisplay, window, &WM_DELETE_WINDOW, 1); createFramebuffer(); + if(checkImageOK(framebufferImage) == false) { + Backend_PrintError("Something's off with the framebuffer.\n"); + return false; + } if(framebufferImage == 0) { return false; } + framebufferPitch = screen_width * 4; return true; }