From 0f1ded057dbf875e69a0d72418d95610db8fa6a3 Mon Sep 17 00:00:00 2001
From: Pierre Ossman <ossman@cendio.se>
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;