summaryrefslogtreecommitdiffstats
path: root/vncviewer
diff options
context:
space:
mode:
authorPierre Ossman <ossman@cendio.se>2014-10-17 16:27:22 +0200
committerPierre Ossman <ossman@cendio.se>2014-10-17 16:27:22 +0200
commitb9203b9342edcf8b209830576aee31f0445ee6fd (patch)
treeeedff1511f164470543799383852595bed3f7ea9 /vncviewer
parent705276743c0dcf15c17c8b56794855cebdecfc1b (diff)
parent7c56b4c332c2bfadc851375b0d38b6991ea81a7a (diff)
downloadtigervnc-b9203b9342edcf8b209830576aee31f0445ee6fd.tar.gz
tigervnc-b9203b9342edcf8b209830576aee31f0445ee6fd.zip
Merge branch 'remote-shm' of https://github.com/twaugh/tigervnc
Diffstat (limited to 'vncviewer')
-rw-r--r--vncviewer/X11PixelBuffer.cxx11
1 files changed, 10 insertions, 1 deletions
diff --git a/vncviewer/X11PixelBuffer.cxx b/vncviewer/X11PixelBuffer.cxx
index 59b90e2c..a7794277 100644
--- a/vncviewer/X11PixelBuffer.cxx
+++ b/vncviewer/X11PixelBuffer.cxx
@@ -156,6 +156,11 @@ int X11PixelBuffer::setupShm()
Bool pixmaps;
XErrorHandler old_handler;
Status status;
+ const char *display_name = XDisplayName (NULL);
+
+ /* Don't use MIT-SHM on remote displays */
+ if (*display_name && *display_name != ':')
+ return 0;
if (!XShmQueryVersion(fl_display, &major, &minor, &pixmaps))
return 0;
@@ -184,7 +189,11 @@ int X11PixelBuffer::setupShm()
caughtError = false;
old_handler = XSetErrorHandler(XShmAttachErrorHandler);
- XShmAttach(fl_display, shminfo);
+ if (!XShmAttach(fl_display, shminfo)) {
+ XSetErrorHandler(old_handler);
+ goto free_shmaddr;
+ }
+
XSync(fl_display, False);
XSetErrorHandler(old_handler);