Merge branch 'multicore' of https://github.com/CendioOssman/tigervnc
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f2e7d50..773556a 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -18,10 +18,10 @@
 include(CMakeMacroLibtoolFile)
 
 project(tigervnc)
-set(VERSION 1.5.80)
+set(VERSION 1.6.80)
 
 # The RC version must always be four comma-separated numbers
-set(RCVERSION 1,5,80,0)
+set(RCVERSION 1,6,80,0)
 
 # Installation paths
 set(BIN_DIR "${CMAKE_INSTALL_PREFIX}/bin")
diff --git a/contrib/packages/rpm/el5/SPECS/tigervnc.spec b/contrib/packages/rpm/el5/SPECS/tigervnc.spec
index ca5d767..45403d9 100644
--- a/contrib/packages/rpm/el5/SPECS/tigervnc.spec
+++ b/contrib/packages/rpm/el5/SPECS/tigervnc.spec
@@ -1,11 +1,18 @@
 %define _default_patch_fuzz 2
 %define tigervnc_src_dir %{_builddir}/%{name}-%{version}%{?snap:-%{snap}}
-%define xorg_buildroot %{tigervnc_src_dir}/xorg.build
 %{!?_self_signed: %define _self_signed 1}
+%{!?_bootstrap: %define _bootstrap 1}
+#%global scl_name %{name}$(echo %version | sed -e 's/\\.//;s/\\..*//')
+%define scl_name %{name}16
+%if %{_bootstrap}
+%define xorg_buildroot $RPM_BUILD_ROOT/opt/%{name}/%{scl_name}
+%else
+%define xorg_buildroot /opt/%{name}/%{scl_name}
+%endif
 
 Name: tigervnc
 Version: @VERSION@
-Release: 8%{?snap:.%{snap}}%{?dist}
+Release: 2%{?snap:.%{snap}}%{?dist}
 Summary: A TigerVNC remote display system
 
 Group: User Interface/Desktops
@@ -19,12 +26,12 @@
 Source6: vncviewer.desktop
 Source9: FindX11.cmake
 Source11: http://fltk.org/pub/fltk/1.3.3/fltk-1.3.3-source.tar.gz
-Source12: http://downloads.sourceforge.net/project/libjpeg-turbo/1.4.1/libjpeg-turbo-1.4.1.tar.gz
-Source13: http://downloads.sourceforge.net/project/libpng/libpng15/older-releases/1.5.10/libpng-1.5.10.tar.bz2
+Source12: http://downloads.sourceforge.net/project/libjpeg-turbo/1.4.2/libjpeg-turbo-1.4.2.tar.gz
+Source13: http://downloads.sourceforge.net/project/libpng/libpng15/1.5.24/libpng-1.5.24.tar.bz2
 Source14: https://ftp.gnu.org/gnu/gmp/gmp-6.0.0a.tar.bz2
-Source15: http://ftp.gnu.org/gnu/libtasn1/libtasn1-4.5.tar.gz
+Source15: http://ftp.gnu.org/gnu/libtasn1/libtasn1-4.7.tar.gz
 Source16: https://ftp.gnu.org/gnu/nettle/nettle-2.7.1.tar.gz
-Source17: ftp://ftp.gnutls.org/gcrypt/gnutls/v3.3/gnutls-3.3.16.tar.xz
+Source17: ftp://ftp.gnutls.org/gcrypt/gnutls/v3.3/gnutls-3.3.19.tar.xz
 
 Source100: http://www.x.org/releases/X11R7.7/src/everything/bigreqsproto-1.1.2.tar.bz2
 Source101: http://www.x.org/releases/X11R7.7/src/everything/compositeproto-0.4.2.tar.bz2
@@ -119,6 +126,9 @@
 BuildRequires: git, gperf, intltool, libtalloc-devel
 BuildRequires: kernel-headers, libatomic_ops-devel
 BuildRequires: xz
+%if !%{_bootstrap}
+BuildRequires: %{name}-static-devel == %{version}
+%endif
 
 Requires(post): initscripts chkconfig coreutils
 Requires(postun):coreutils
@@ -270,7 +280,17 @@
 %description icons
 This package contains icons for TigerVNC viewer
 
+%if %{_bootstrap}
+%package static-devel
+Summary: Static development files necessary to build TigerVNC
+Group: Development/Libraries
+
+%description static-devel
+This package contains static development files necessary to build TigerVNC
+%endif
+
 %prep
+rm -rf $RPM_BUILD_ROOT
 rm -rf %{_builddir}/%{name}-%{version}%{?snap:-%{snap}}
 %setup -q -n %{name}-%{version}%{?snap:-%{snap}}
 
@@ -281,6 +301,7 @@
 %patch4 -p1 -b .cookie
 %patch12 -p1 -b .static-build-fixes
 
+%if %{_bootstrap}
 tar xzf %SOURCE11
 pushd fltk-*
 %patch15 -p1 -b .static-libs
@@ -292,9 +313,11 @@
 tar xzf %SOURCE15
 tar xzf %SOURCE16
 xzcat %SOURCE17 | tar xf -
+%endif
 
 mkdir xorg
 pushd xorg
+%if %{_bootstrap}
 tar xjf %SOURCE100
 tar xjf %SOURCE101
 tar xjf %SOURCE102
@@ -362,7 +385,9 @@
 tar xjf %SOURCE156
 tar xjf %SOURCE157
 tar xjf %SOURCE158
+%endif
 tar xjf %SOURCE159
+%if %{_bootstrap}
 tar xjf %SOURCE160
 tar xjf %SOURCE161
 tar xjf %SOURCE162
@@ -406,6 +431,7 @@
 tar xjf %SOURCE202
 tar xjf %SOURCE203
 tar xjf %SOURCE204
+%endif
 pushd xorg-server-1*
 %patch10000 -p1 -b .CVE-2014-mult
 %patch10001 -p1 -b .CVE-regressions
@@ -414,7 +440,9 @@
   chmod +r "$f"
 done
 popd
+%if %{_bootstrap}
 tar xzf %SOURCE205
+%endif
 popd
 
 cp -a xorg/xorg-server-1*/* unix/xserver
@@ -436,12 +464,13 @@
 export CXXFLAGS="$CFLAGS -static-libgcc"
 export PYTHON=python26
 
+%if %{_bootstrap}
 mkdir -p %{xorg_buildroot}%{_libdir}
 pushd %{xorg_buildroot}%{_libdir}
-ln -s `g++44 -print-file-name=libz.a`
-ln -s `g++44 -print-file-name=libgcc.a`
-ln -s `g++44 -print-file-name=libexpat.a`
-ln -s `g++44 -print-file-name=libcrypto.a`
+ln -s `g++44 -print-file-name=libz.a` .
+ln -s `g++44 -print-file-name=libgcc.a` .
+ln -s `g++44 -print-file-name=libexpat.a` .
+ln -s `g++44 -print-file-name=libcrypto.a` .
 popd
 
 echo "*** Building libjpeg-turbo ***"
@@ -463,6 +492,7 @@
 find %{xorg_buildroot}%{_prefix} -type f -name "*.pc" -exec sed -i -e "s|prefix=%{_prefix}|prefix=%{xorg_buildroot}%{_prefix}|" {} \;
 popd
 popd
+%endif
 
 export CFLAGS="$RPM_OPT_FLAGS -fPIC -I%{xorg_buildroot}%{_includedir}"
 export CXXFLAGS="$RPM_OPT_FLAGS -fPIC -I%{xorg_buildroot}%{_includedir} -static-libgcc"
@@ -471,6 +501,7 @@
 export ACLOCAL="aclocal -I %{xorg_buildroot}%{_datadir}/aclocal"
 export PKG_CONFIG_PATH="%{xorg_buildroot}%{_libdir}/pkgconfig:%{xorg_buildroot}%{_libdir}/tigervnc/pkgconfig:%{xorg_buildroot}%{_datadir}/pkgconfig:%{_libdir}/pkgconfig:%{_datadir}/pkgconfig"
 
+%if %{_bootstrap}
 echo "*** Building gmp ***"
 pushd gmp-*
 %ifarch x86_64 s390x ia64 ppc64 alpha sparc64
@@ -735,7 +766,11 @@
 
   popd
 done
+%else
+pushd xorg
+%endif
 
+%if %{_bootstrap}
 # build mesa
 echo "*** Building Mesa ***"
 pushd Mesa-*
@@ -775,9 +810,11 @@
 find %{xorg_buildroot}%{_prefix} -type f -name "*.pc" -exec sed -i -e "s|libdir=%{_libdir}|libdir=%{xorg_buildroot}%{_libdir}|" {} \;
 find %{xorg_buildroot}%{_prefix} -type f -name "*.pc" -exec sed -i -e "s|prefix=%{_prefix}|prefix=%{xorg_buildroot}%{_prefix}|" {} \;
 popd
+%endif
 
 popd
 
+%if %{_bootstrap}
 echo "*** Building libpng ***"
 pushd libpng-*
 CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS}" ./configure \
@@ -791,10 +828,12 @@
 
 echo "*** Building fltk ***"
 pushd fltk-*
+%endif
 export CMAKE_PREFIX_PATH="%{xorg_buildroot}%{_prefix}:%{_prefix}"
 export CMAKE_EXE_LINKER_FLAGS=$LDFLAGS
 export PKG_CONFIG="pkg-config --static"
-CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS}" ./configure \
+%if %{_bootstrap}
+./configure \
   --prefix=%{_prefix} \
   --libdir=%{_libdir} \
   --enable-x11 \
@@ -812,6 +851,7 @@
 make %{?_smp_mflags}
 make DESTDIR=%{xorg_buildroot} install
 popd
+%endif
 
 echo "*** Building VNC ***"
 export CFLAGS="$CFLAGS -fPIC"
@@ -835,7 +875,7 @@
 autoreconf -fiv
 chmod +x ./configure
 # create a relocatable Xvnc so that we can bundle the custom libGL & swrast w/o overwriting existing libs
-GL_LIBS='-Wl,-Bdynamic -lGL' LDFLAGS="$LDFLAGS -L%{xorg_buildroot}%{_libdir}/tigervnc -Wl,-rpath,"'\$$'"ORIGIN/../..%{_libdir}/tigervnc:%{_libdir}/tigervnc:%{_libdir}" \
+GL_LIBS='-Wl,-Bdynamic -lGL' LDFLAGS="$LDFLAGS -Wl,-rpath,"'\$$'"ORIGIN/../..%{_libdir}/tigervnc:%{_libdir}/tigervnc:%{_libdir}" \
 %configure \
   --prefix=%{_prefix} --libdir=%{_libdir} --mandir=%{_datadir}/man \
   --sysconfdir=%{_sysconfdir} --localstatedir=%{_localstatedir} \
@@ -886,16 +926,17 @@
 popd
 
 %install
-rm -rf $RPM_BUILD_ROOT
 make install DESTDIR=$RPM_BUILD_ROOT
 
 pushd unix/xserver/hw/vnc
 make install DESTDIR=$RPM_BUILD_ROOT
 popd
 
-pushd xorg/Mesa-*
-make install DESTDIR=$RPM_BUILD_ROOT
-popd
+mkdir -p $RPM_BUILD_ROOT%{_libdir}/tigervnc/dri
+install -m644 -p %{xorg_buildroot}%{_libdir}/tigervnc/dri/swrast_dri.so $RPM_BUILD_ROOT%{_libdir}/tigervnc/dri
+for f in `find %{xorg_buildroot}%{_libdir}/tigervnc -name "lib*" -print` ; do
+cp -a $f $RPM_BUILD_ROOT%{_libdir}/tigervnc
+done
 
 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/init.d
 mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
@@ -926,6 +967,12 @@
 
 %find_lang %{name} %{name}.lang
 
+%if %{_bootstrap}
+find %{xorg_buildroot}%{_prefix} -type f -name "*.la" -delete
+find %{xorg_buildroot}%{_prefix} -type f -name "*.pc" -exec sed -i -e "s|libdir=%{xorg_buildroot}%{_libdir}|libdir=/opt/%{name}/%{scl_name}%{_libdir}|" {} \;
+find %{xorg_buildroot}%{_prefix} -type f -name "*.pc" -exec sed -i -e "s|prefix=%{xorg_buildroot}%{_prefix}|prefix=/opt/%{name}/%{scl_name}%{_prefix}|" {} \;
+%endif
+
 # remove unwanted files
 rm -rf $RPM_BUILD_ROOT%{_libdir}/tigervnc/pkgconfig
 rm -rf $RPM_BUILD_ROOT%{_libdir}/pkgconfig
@@ -1000,7 +1047,27 @@
 %defattr(-,root,root,-)
 %{_datadir}/icons/hicolor/*/apps/*
 
+%if %{_bootstrap}
+%files static-devel
+%defattr(-,root,root,-)
+/opt/%{name}/%{scl_name}%{_sysconfdir}/*
+/opt/%{name}/%{scl_name}%{_bindir}/*
+/opt/%{name}/%{scl_name}%{_datadir}/*
+/opt/%{name}/%{scl_name}%{_includedir}/*
+/opt/%{name}/%{scl_name}%{_libdir}/*
+%ifarch x86_64 s390x ia64 ppc64 alpha sparc64
+/opt/%{name}/%{scl_name}%{_prefix}/lib/python2.6/*
+%endif
+%endif
+
 %changelog
+* Fri Nov 27 2015 Brian P. Hinz <bphinz@users.sourceforge.net> 1.6.80-2
+- Split static pre-reqs into separate package
+
+* Thu Nov 26 2015 Brian P. Hinz <bphinz@users.sourceforge.net> 1.6.80-1
+- Version bump for 1.6 release
+- Update libjpeg-turbo, gnutls, libtasn1, libpng to latest upstream versions.
+
 * Sun Sep 12 2015 Brian P. Hinz <bphinz@users.sourceforge.net> 1.5.80-8
 - Build Xvnc with link path relative to $ORIGIN and apply dridir patch
   to make it portable.
diff --git a/contrib/packages/rpm/el6/SPECS/tigervnc.spec b/contrib/packages/rpm/el6/SPECS/tigervnc.spec
index fd3b2cc..74f1d77 100644
--- a/contrib/packages/rpm/el6/SPECS/tigervnc.spec
+++ b/contrib/packages/rpm/el6/SPECS/tigervnc.spec
@@ -1,8 +1,16 @@
 %{!?_self_signed: %define _self_signed 1}
+%{!?_bootstrap: %define _bootstrap 1}
+%define tigervnc_src_dir %{_builddir}/%{name}-%{version}%{?snap:-%{snap}}
+%global scl_name %{name}16
+%if %{_bootstrap}
+%define static_lib_buildroot %{tigervnc_src_dir}/opt/%{name}/%{scl_name}
+%else
+%define static_lib_buildroot /opt/%{name}/%{scl_name}
+%endif
 
 Name: tigervnc
 Version: @VERSION@
-Release: 21%{?snap:.%{snap}}%{?dist}
+Release: 2%{?snap:.%{snap}}%{?dist}
 Summary: A TigerVNC remote display system
 
 Group: User Interface/Desktops
@@ -15,11 +23,11 @@
 Source2: vncserver.sysconfig
 Source6: vncviewer.desktop
 Source11: http://fltk.org/pub/fltk/1.3.3/fltk-1.3.3-source.tar.gz
-Source13: http://downloads.sourceforge.net/project/libpng/libpng15/older-releases/1.5.10/libpng-1.5.10.tar.bz2
+Source13: http://downloads.sourceforge.net/project/libpng/libpng15/1.5.24/libpng-1.5.24.tar.bz2
 Source14: https://ftp.gnu.org/gnu/gmp/gmp-6.0.0a.tar.bz2
-Source15: http://ftp.gnu.org/gnu/libtasn1/libtasn1-4.2.tar.gz
+Source15: http://ftp.gnu.org/gnu/libtasn1/libtasn1-4.7.tar.gz
 Source16: https://ftp.gnu.org/gnu/nettle/nettle-2.7.1.tar.gz
-Source17: ftp://ftp.gnutls.org/gcrypt/gnutls/v3.3/gnutls-3.3.13.tar.xz
+Source17: ftp://ftp.gnutls.org/gcrypt/gnutls/v3.3/gnutls-3.3.19.tar.xz
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
 BuildRequires: gcc, gcc-c++
@@ -33,6 +41,9 @@
 BuildRequires: desktop-file-utils, java-devel, jpackage-utils
 BuildRequires: libjpeg-turbo-devel, pam-devel
 BuildRequires: cmake >= 2.8
+%if !%{_bootstrap}
+BuildRequires: %{name}-static-devel == %{version}
+%endif
 %ifnarch s390 s390x
 BuildRequires: xorg-x11-server-devel
 %endif
@@ -137,18 +148,29 @@
 %description icons
 This package contains icons for TigerVNC viewer
 
+%if %{_bootstrap}
+%package static-devel
+Summary: Static development files necessary to build TigerVNC
+Group: Development/Libraries
+
+%description static-devel
+This package contains static development files necessary to build TigerVNC
+%endif
+
 %prep
+rm -rf $RPM_BUILD_ROOT
 %setup -q -n %{name}-%{version}%{?snap:-%{snap}}
 
-# sed -i -e 's/80/0/g' CMakeLists.txt
 %patch4 -p1 -b .cookie
 
+%if %{_bootstrap}
 tar xzf %SOURCE11
 tar xjf %SOURCE13
 tar xjf %SOURCE14
 tar xzf %SOURCE15
 tar xzf %SOURCE16
 xzcat %SOURCE17 | tar xf -
+%endif
 
 cp -r /usr/share/xorg-x11-server-source/* unix/xserver
 pushd unix/xserver
@@ -161,9 +183,9 @@
 %patch16 -p0 -b .man
 
 %build
-%define tigervnc_src_dir %{_builddir}/%{name}-%{version}%{?snap:-%{snap}}
-%define static_lib_buildroot %{tigervnc_src_dir}/build
+%if %{_bootstrap}
 mkdir -p %{static_lib_buildroot}%{_libdir}
+%endif
 
 %ifarch sparcv9 sparc64 s390 s390x
 export CFLAGS="$RPM_OPT_FLAGS -fPIC -I%{static_lib_buildroot}%{_includedir}"
@@ -174,6 +196,7 @@
 export CPPFLAGS=$CXXFLAGS
 export PKG_CONFIG_PATH="%{static_lib_buildroot}%{_libdir}/pkgconfig:%{static_lib_buildroot}%{_datadir}/pkgconfig:%{_libdir}/pkgconfig:%{_datadir}/pkgconfig"
 
+%if %{_bootstrap}
 echo "*** Building gmp ***"
 pushd gmp-*
 ./configure --prefix=%{_prefix} --libdir=%{_libdir} --enable-static --disable-shared --enable-cxx --disable-assembly
@@ -238,9 +261,11 @@
 
 echo "*** Building fltk ***"
 pushd fltk-*
+%endif
 export CMAKE_PREFIX_PATH="%{static_lib_buildroot}%{_prefix}:%{_prefix}"
 export CMAKE_EXE_LINKER_FLAGS=$LDFLAGS
 export PKG_CONFIG="pkg-config --static"
+%if %{_bootstrap}
 CFLAGS="${CFLAGS}" CXXFLAGS="${CXXFLAGS}" LDFLAGS="-L%{static_lib_buildroot}%{_libdir} -Wl,-Bstatic -lpng -Wl,-Bdynamic $LDFLAGS" ./configure \
   --prefix=%{_prefix} \
   --libdir=%{_libdir} \
@@ -259,6 +284,7 @@
 make %{?_smp_mflags} 
 make DESTDIR=%{static_lib_buildroot} install
 popd
+%endif
 
 %{cmake} -G"Unix Makefiles" \
   -DBUILD_STATIC=off \
@@ -314,7 +340,17 @@
 popd
 
 %install
-rm -rf $RPM_BUILD_ROOT
+%if %{_bootstrap}
+for l in gmp libtasn1 nettle gnutls libpng fltk; do
+pushd $l-*
+make install DESTDIR=$RPM_BUILD_ROOT/opt/%{name}/%{scl_name}
+popd
+done
+find %{buildroot}/opt/%{name}/%{scl_name}%{_prefix} -type f -name "*.la" -delete
+find %{buildroot}/opt/%{name}/%{scl_name}%{_prefix} -type f -name "*.pc" -exec sed -i -e "s|libdir=%{_libdir}|libdir=/opt/%{name}/%{scl_name}%{_libdir}|" {} \;
+find %{buildroot}/opt/%{name}/%{scl_name}%{_prefix} -type f -name "*.pc" -exec sed -i -e "s|prefix=%{_prefix}|prefix=/opt/%{name}/%{scl_name}%{_prefix}|" {} \;
+%endif
+
 make install DESTDIR=$RPM_BUILD_ROOT
 
 pushd unix/xserver/hw/vnc
@@ -422,7 +458,23 @@
 %defattr(-,root,root,-)
 %{_datadir}/icons/hicolor/*/apps/*
 
+%if %{_bootstrap}
+%files static-devel
+%defattr(-,root,root,-)
+/opt/%{name}/%{scl_name}%{_bindir}/*
+/opt/%{name}/%{scl_name}%{_includedir}/*
+/opt/%{name}/%{scl_name}%{_libdir}/*
+/opt/%{name}/%{scl_name}%{_datadir}/*
+%endif
+
 %changelog
+* Sun Nov 29 2015 Brian P. Hinz <bphinz@users.sourceforge.net> 1.6.80-2
+- Split static pre-reqs into separate package
+
+* Thu Nov 26 2015 Brian P. Hinz <bphinz@users.sourceforge.net> 1.6.80-1
+- Version bump for 1.6 release
+- Update gnutls, libtasn1, libpng to latest upstream versions.
+
 * Sat Mar 14 2015 Brian P. Hinz <bphinz@users.sourceforge.net> 1.4.80-21
 - Build static libraries to meet new minimum requirements
 
diff --git a/contrib/xorg/build-xorg b/contrib/xorg/build-xorg
index a847292..d01cf03 100755
--- a/contrib/xorg/build-xorg
+++ b/contrib/xorg/build-xorg
@@ -12,7 +12,7 @@
 XORG_VERSION=7.5
 XONLY=0
 CFGHOST=
-SRCDIR=`dirname $0`/..
+SRCDIR=`dirname $0`/../..
 
 modules="dri2proto \
     libpthread-stubs \
diff --git a/java/CMakeLists.txt b/java/CMakeLists.txt
index c7d6300..8dd09d1 100644
--- a/java/CMakeLists.txt
+++ b/java/CMakeLists.txt
@@ -2,7 +2,7 @@
 
 project(tigervnc-java Java)
 if(NOT VERSION)
-  set(VERSION 1.5.80)
+  set(VERSION 1.6.80)
 endif()
 
 find_package(Java)
diff --git a/po/tigervnc.pot b/po/tigervnc.pot
index d9cf480..2bb748d 100644
--- a/po/tigervnc.pot
+++ b/po/tigervnc.pot
@@ -8,7 +8,7 @@
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: tigervnc-devel@googlegroups.com\n"
-"POT-Creation-Date: 2015-06-22 07:27+0000\n"
+"POT-Creation-Date: 2015-11-26 11:33+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -22,103 +22,103 @@
 msgid "connected to host %s port %d"
 msgstr ""
 
-#: vncviewer/CConn.cxx:172
+#: vncviewer/CConn.cxx:173
 #, c-format
 msgid "Desktop name: %.80s"
 msgstr ""
 
-#: vncviewer/CConn.cxx:177
+#: vncviewer/CConn.cxx:178
 #, c-format
 msgid "Host: %.80s port: %d"
 msgstr ""
 
-#: vncviewer/CConn.cxx:182
+#: vncviewer/CConn.cxx:183
 #, c-format
 msgid "Size: %d x %d"
 msgstr ""
 
-#: vncviewer/CConn.cxx:190
+#: vncviewer/CConn.cxx:191
 #, c-format
 msgid "Pixel format: %s"
 msgstr ""
 
-#: vncviewer/CConn.cxx:197
+#: vncviewer/CConn.cxx:198
 #, c-format
 msgid "(server default %s)"
 msgstr ""
 
-#: vncviewer/CConn.cxx:202
+#: vncviewer/CConn.cxx:203
 #, c-format
 msgid "Requested encoding: %s"
 msgstr ""
 
-#: vncviewer/CConn.cxx:207
+#: vncviewer/CConn.cxx:208
 #, c-format
 msgid "Last used encoding: %s"
 msgstr ""
 
-#: vncviewer/CConn.cxx:212
+#: vncviewer/CConn.cxx:213
 #, c-format
 msgid "Line speed estimate: %d kbit/s"
 msgstr ""
 
-#: vncviewer/CConn.cxx:217
+#: vncviewer/CConn.cxx:218
 #, c-format
 msgid "Protocol version: %d.%d"
 msgstr ""
 
-#: vncviewer/CConn.cxx:222
+#: vncviewer/CConn.cxx:223
 #, c-format
 msgid "Security method: %s"
 msgstr ""
 
-#: vncviewer/CConn.cxx:322
+#: vncviewer/CConn.cxx:329
 #, c-format
 msgid "SetDesktopSize failed: %d"
 msgstr ""
 
-#: vncviewer/CConn.cxx:387
+#: vncviewer/CConn.cxx:398
 msgid "Invalid SetColourMapEntries from server!"
 msgstr ""
 
 #. TRANSLATORS: Refers to a VNC protocol encoding type
-#: vncviewer/CConn.cxx:433 vncviewer/CConn.cxx:440
+#: vncviewer/CConn.cxx:444 vncviewer/CConn.cxx:451
 #, c-format
 msgid "Unknown encoding %d"
 msgstr ""
 
-#: vncviewer/CConn.cxx:434 vncviewer/CConn.cxx:441
+#: vncviewer/CConn.cxx:445 vncviewer/CConn.cxx:452
 msgid "Unknown encoding"
 msgstr ""
 
-#: vncviewer/CConn.cxx:473
+#: vncviewer/CConn.cxx:484
 msgid "Enabling continuous updates"
 msgstr ""
 
-#: vncviewer/CConn.cxx:543
+#: vncviewer/CConn.cxx:554
 #, c-format
 msgid "Throughput %d kbit/s - changing to quality %d"
 msgstr ""
 
-#: vncviewer/CConn.cxx:565
+#: vncviewer/CConn.cxx:576
 #, c-format
 msgid "Throughput %d kbit/s - full color is now %s"
 msgstr ""
 
-#: vncviewer/CConn.cxx:567
+#: vncviewer/CConn.cxx:578
 msgid "disabled"
 msgstr ""
 
-#: vncviewer/CConn.cxx:567
+#: vncviewer/CConn.cxx:578
 msgid "enabled"
 msgstr ""
 
-#: vncviewer/CConn.cxx:577
+#: vncviewer/CConn.cxx:588
 #, c-format
 msgid "Using %s encoding"
 msgstr ""
 
-#: vncviewer/CConn.cxx:624
+#: vncviewer/CConn.cxx:635
 #, c-format
 msgid "Using pixel format %s"
 msgstr ""
@@ -162,11 +162,11 @@
 msgstr ""
 
 #: vncviewer/OptionsDialog.cxx:83 vncviewer/ServerDialog.cxx:91
-#: vncviewer/vncviewer.cxx:263
+#: vncviewer/vncviewer.cxx:268
 msgid "Cancel"
 msgstr ""
 
-#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:262
+#: vncviewer/OptionsDialog.cxx:88 vncviewer/vncviewer.cxx:267
 msgid "OK"
 msgstr ""
 
@@ -351,8 +351,6 @@
 msgid "Opening password file failed"
 msgstr ""
 
-#. Largely copied from FLTK so that we get the same look and feel
-#. as the simpler password input.
 #: vncviewer/UserDialog.cxx:86 vncviewer/UserDialog.cxx:96
 msgid "VNC authentication"
 msgstr ""
@@ -369,95 +367,112 @@
 msgid "Username:"
 msgstr ""
 
-#: vncviewer/Viewport.cxx:434
+#: vncviewer/Viewport.cxx:433
 #, c-format
 msgid "Unable to create platform specific framebuffer: %s"
 msgstr ""
 
-#: vncviewer/Viewport.cxx:435
+#: vncviewer/Viewport.cxx:434
 msgid "Using platform independent framebuffer"
 msgstr ""
 
-#: vncviewer/Viewport.cxx:669
+#: vncviewer/Viewport.cxx:668
 #, c-format
 msgid "No scan code for extended virtual key 0x%02x"
 msgstr ""
 
-#: vncviewer/Viewport.cxx:671
+#: vncviewer/Viewport.cxx:670
 #, c-format
 msgid "No scan code for virtual key 0x%02x"
 msgstr ""
 
-#: vncviewer/Viewport.cxx:688
+#: vncviewer/Viewport.cxx:687
 #, c-format
 msgid "No symbol for extended virtual key 0x%02x"
 msgstr ""
 
-#: vncviewer/Viewport.cxx:690
+#: vncviewer/Viewport.cxx:689
 #, c-format
 msgid "No symbol for virtual key 0x%02x"
 msgstr ""
 
-#: vncviewer/Viewport.cxx:728
+#: vncviewer/Viewport.cxx:727
 #, c-format
 msgid "No symbol for key code 0x%02x (in the current state)"
 msgstr ""
 
-#: vncviewer/Viewport.cxx:754
+#: vncviewer/Viewport.cxx:753
 #, c-format
 msgid "No symbol for key code %d (in the current state)"
 msgstr ""
 
-#: vncviewer/Viewport.cxx:791
+#: vncviewer/Viewport.cxx:790
+msgctxt "ContextMenu|"
 msgid "E&xit viewer"
 msgstr ""
 
-#: vncviewer/Viewport.cxx:794
+#: vncviewer/Viewport.cxx:793
+msgctxt "ContextMenu|"
 msgid "&Full screen"
 msgstr ""
 
 #: vncviewer/Viewport.cxx:796
+msgctxt "ContextMenu|"
+msgid "Minimi&ze"
+msgstr ""
+
+#: vncviewer/Viewport.cxx:798
+msgctxt "ContextMenu|"
 msgid "Resize &window to session"
 msgstr ""
 
-#: vncviewer/Viewport.cxx:801
+#: vncviewer/Viewport.cxx:803
+msgctxt "ContextMenu|"
 msgid "&Ctrl"
 msgstr ""
 
-#: vncviewer/Viewport.cxx:803
+#: vncviewer/Viewport.cxx:806
+msgctxt "ContextMenu|"
 msgid "&Alt"
 msgstr ""
 
-#: vncviewer/Viewport.cxx:808
+#: vncviewer/Viewport.cxx:812
 #, c-format
+msgctxt "ContextMenu|"
 msgid "Send %s"
 msgstr ""
 
-#: vncviewer/Viewport.cxx:814
+#: vncviewer/Viewport.cxx:818
+msgctxt "ContextMenu|"
 msgid "Send Ctrl-Alt-&Del"
 msgstr ""
 
-#: vncviewer/Viewport.cxx:817
+#: vncviewer/Viewport.cxx:821
+msgctxt "ContextMenu|"
 msgid "&Refresh screen"
 msgstr ""
 
-#: vncviewer/Viewport.cxx:820
+#: vncviewer/Viewport.cxx:824
+msgctxt "ContextMenu|"
 msgid "&Options..."
 msgstr ""
 
-#: vncviewer/Viewport.cxx:822
+#: vncviewer/Viewport.cxx:826
+msgctxt "ContextMenu|"
 msgid "Connection &info..."
 msgstr ""
 
-#: vncviewer/Viewport.cxx:824
+#: vncviewer/Viewport.cxx:828
+msgctxt "ContextMenu|"
 msgid "About &TigerVNC viewer..."
 msgstr ""
 
-#: vncviewer/Viewport.cxx:827
+#: vncviewer/Viewport.cxx:831
+msgctxt "ContextMenu|"
 msgid "Dismiss &menu"
 msgstr ""
 
-#: vncviewer/Viewport.cxx:908
+#: vncviewer/Viewport.cxx:915
 msgid "VNC connection info"
 msgstr ""
 
@@ -566,7 +581,6 @@
 msgid "Failed to read configuration file, can't obtain home directory path."
 msgstr ""
 
-#. Use defaults.
 #: vncviewer/parameters.cxx:565
 #, c-format
 msgid "Failed to read configuration file, can't open %s: %s"
@@ -610,95 +624,90 @@
 "See http://www.tigervnc.org for information on TigerVNC."
 msgstr ""
 
-#: vncviewer/vncviewer.cxx:122
+#: vncviewer/vncviewer.cxx:127
 msgid "About TigerVNC Viewer"
 msgstr ""
 
-#: vncviewer/vncviewer.cxx:139 vncviewer/vncviewer.cxx:151
+#: vncviewer/vncviewer.cxx:144 vncviewer/vncviewer.cxx:156
 #, c-format
 msgid "Error starting new TigerVNC Viewer: %s"
 msgstr ""
 
-#. CleanupSignalHandler allows C++ object cleanup to happen because it calls
-#. exit() rather than the default which is to abort.
-#: vncviewer/vncviewer.cxx:160
+#: vncviewer/vncviewer.cxx:165
 #, c-format
 msgid "Termination signal %d has been received. TigerVNC Viewer will now exit."
 msgstr ""
 
-#. Avoid empty titles for popups
-#: vncviewer/vncviewer.cxx:252
+#: vncviewer/vncviewer.cxx:257
 msgid "TigerVNC Viewer"
 msgstr ""
 
-#. FLTK exposes these so that we can translate them.
-#: vncviewer/vncviewer.cxx:260
+#: vncviewer/vncviewer.cxx:265
 msgid "No"
 msgstr ""
 
-#: vncviewer/vncviewer.cxx:261
+#: vncviewer/vncviewer.cxx:266
 msgid "Yes"
 msgstr ""
 
-#: vncviewer/vncviewer.cxx:264
+#: vncviewer/vncviewer.cxx:269
 msgid "Close"
 msgstr ""
 
-#: vncviewer/vncviewer.cxx:269
+#: vncviewer/vncviewer.cxx:274
 msgid "About"
 msgstr ""
 
-#: vncviewer/vncviewer.cxx:272
+#: vncviewer/vncviewer.cxx:277
 msgid "Hide"
 msgstr ""
 
-#: vncviewer/vncviewer.cxx:275
+#: vncviewer/vncviewer.cxx:280
 msgid "Quit"
 msgstr ""
 
-#. Don't want the print item
-#: vncviewer/vncviewer.cxx:279
+#: vncviewer/vncviewer.cxx:284
 msgid "Services"
 msgstr ""
 
-#: vncviewer/vncviewer.cxx:280
+#: vncviewer/vncviewer.cxx:285
 msgid "Hide Others"
 msgstr ""
 
-#: vncviewer/vncviewer.cxx:281
+#: vncviewer/vncviewer.cxx:286
 msgid "Show All"
 msgstr ""
 
-#. Fl_Sys_Menu_Bar overrides methods without them being virtual,
-#. which means we cannot use our generic Fl_Menu_ helpers.
-#: vncviewer/vncviewer.cxx:290
+#: vncviewer/vncviewer.cxx:295
+msgctxt "SysMenu|"
 msgid "&File"
 msgstr ""
 
-#: vncviewer/vncviewer.cxx:292
+#: vncviewer/vncviewer.cxx:298
+msgctxt "SysMenu|File|"
 msgid "&New Connection"
 msgstr ""
 
-#: vncviewer/vncviewer.cxx:303
+#: vncviewer/vncviewer.cxx:310
 msgid "Could not create VNC home directory: can't obtain home directory path."
 msgstr ""
 
-#: vncviewer/vncviewer.cxx:308
+#: vncviewer/vncviewer.cxx:315
 #, c-format
 msgid "Could not create VNC home directory: %s."
 msgstr ""
 
 #. TRANSLATORS: "Parameters" are command line arguments, or settings
 #. from a file or the Windows registry.
-#: vncviewer/vncviewer.cxx:513 vncviewer/vncviewer.cxx:514
+#: vncviewer/vncviewer.cxx:520 vncviewer/vncviewer.cxx:521
 msgid "Parameters -listen and -via are incompatible"
 msgstr ""
 
-#: vncviewer/vncviewer.cxx:529
+#: vncviewer/vncviewer.cxx:536
 #, c-format
 msgid "Listening on port %d"
 msgstr ""
 
-#: vncviewer/vncviewer.cxx:590
+#: vncviewer/vncviewer.cxx:601
 msgid "Internal FLTK error. Exiting."
 msgstr ""
diff --git a/unix/xserver/hw/vnc/vncExt.c b/unix/xserver/hw/vnc/vncExt.c
index 2f5ff5c..43794da 100644
--- a/unix/xserver/hw/vnc/vncExt.c
+++ b/unix/xserver/hw/vnc/vncExt.c
@@ -196,7 +196,7 @@
   rep.success = 1;
 
   // Send DesktopName update if desktop name has been changed
-  if (strncasecmp(param, "desktop", 7) != 0)
+  if (strncasecmp(param, "desktop", 7) == 0)
     vncUpdateDesktopName();
 
 deny:
diff --git a/unix/xserver/hw/vnc/vncHooks.c b/unix/xserver/hw/vnc/vncHooks.c
index eee2682..886c646 100644
--- a/unix/xserver/hw/vnc/vncHooks.c
+++ b/unix/xserver/hw/vnc/vncHooks.c
@@ -1111,19 +1111,26 @@
                                   GCPtr pGC, int srcx, int srcy, int w, int h,
                                   int dstx, int dsty)
 {
-  BoxRec box;
   RegionRec dst, src, changed;
 
   RegionPtr ret;
 
   GC_OP_PROLOGUE(pGC, CopyArea);
 
-  box.x1 = dstx + pDst->x;
-  box.y1 = dsty + pDst->y;
-  box.x2 = box.x1 + w;
-  box.y2 = box.y1 + h;
+  // Apparently this happens now and then...
+  if ((w == 0) || (h == 0))
+    REGION_NULL(pGC->pScreen, &dst);
+  else {
+    BoxRec box;
 
-  REGION_INIT(pGC->pScreen, &dst, &box, 0);
+    box.x1 = dstx + pDst->x;
+    box.y1 = dsty + pDst->y;
+    box.x2 = box.x1 + w;
+    box.y2 = box.y1 + h;
+
+    REGION_INIT(pGC->pScreen, &dst, &box, 0);
+  }
+
   REGION_INTERSECT(pGC->pScreen, &dst, &dst, pGC->pCompositeClip);
 
   // The source of the data has to be something that's on screen.
@@ -1131,6 +1138,8 @@
   if ((pSrc->pScreen == pGC->pScreen) &&
       ((pSrc->type == DRAWABLE_WINDOW) ||
        (pSrc == &pGC->pScreen->GetScreenPixmap(pGC->pScreen)->drawable))) {
+    BoxRec box;
+
     box.x1 = srcx + pSrc->x;
     box.y1 = srcy + pSrc->y;
     box.x2 = box.x1 + w;
diff --git a/unix/xserver/hw/vnc/xvnc.c b/unix/xserver/hw/vnc/xvnc.c
index ee3dab2..17a39b1 100644
--- a/unix/xserver/hw/vnc/xvnc.c
+++ b/unix/xserver/hw/vnc/xvnc.c
@@ -85,7 +85,7 @@
 #include "version-config.h"
 #include "site.h"
 
-#define XVNCVERSION "TigerVNC 1.5.80"
+#define XVNCVERSION "TigerVNC 1.6.80"
 #define XVNCCOPYRIGHT ("Copyright (C) 1999-2015 TigerVNC Team and many others (see README.txt)\n" \
                        "See http://www.tigervnc.org for information on TigerVNC.\n")