diff options
author | Pierre Ossman <ossman@cendio.se> | 2014-10-17 16:27:22 +0200 |
---|---|---|
committer | Pierre Ossman <ossman@cendio.se> | 2014-10-17 16:27:22 +0200 |
commit | b9203b9342edcf8b209830576aee31f0445ee6fd (patch) | |
tree | eedff1511f164470543799383852595bed3f7ea9 /vncviewer | |
parent | 705276743c0dcf15c17c8b56794855cebdecfc1b (diff) | |
parent | 7c56b4c332c2bfadc851375b0d38b6991ea81a7a (diff) | |
download | tigervnc-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.cxx | 11 |
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); |