From 0f1ded057dbf875e69a0d72418d95610db8fa6a3 Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Mon, 30 Dec 2019 10:50:52 +0100 Subject: [PATCH] Provide correct dimensions for XShm setup Since 53f913a we initialize the underlying PixelBuffer with 0x0 dimensions, which means we need to keep more explicit track of what we are trying to allocate in the setup methods. --- vncviewer/PlatformPixelBuffer.cxx | 6 +++--- vncviewer/PlatformPixelBuffer.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/vncviewer/PlatformPixelBuffer.cxx b/vncviewer/PlatformPixelBuffer.cxx index 61f7b743b..59e51d596 100644 --- a/vncviewer/PlatformPixelBuffer.cxx +++ b/vncviewer/PlatformPixelBuffer.cxx @@ -43,7 +43,7 @@ PlatformPixelBuffer::PlatformPixelBuffer(int width, int height) : #endif { #if !defined(WIN32) && !defined(__APPLE__) - if (!setupShm()) { + if (!setupShm(width, height)) { xim = XCreateImage(fl_display, CopyFromParent, 32, ZPixmap, 0, 0, width, height, 32, 0); if (!xim) @@ -136,7 +136,7 @@ static int XShmAttachErrorHandler(Display *dpy, XErrorEvent *error) return 0; } -bool PlatformPixelBuffer::setupShm() +bool PlatformPixelBuffer::setupShm(int width, int height) { int major, minor; Bool pixmaps; @@ -153,7 +153,7 @@ bool PlatformPixelBuffer::setupShm() shminfo = new XShmSegmentInfo; xim = XShmCreateImage(fl_display, CopyFromParent, 32, - ZPixmap, 0, shminfo, width(), height()); + ZPixmap, 0, shminfo, width, height); if (!xim) goto free_shminfo; diff --git a/vncviewer/PlatformPixelBuffer.h b/vncviewer/PlatformPixelBuffer.h index f9038cd9c..ec439f64f 100644 --- a/vncviewer/PlatformPixelBuffer.h +++ b/vncviewer/PlatformPixelBuffer.h @@ -53,7 +53,7 @@ class PlatformPixelBuffer: public rfb::FullFramePixelBuffer, public Surface { #if !defined(WIN32) && !defined(__APPLE__) protected: - bool setupShm(); + bool setupShm(int width, int height); protected: XShmSegmentInfo *shminfo;