forked from pool/tigervnc
Stefan Dirsch
e5b1bdbcef
- Update to tigervnc 1.12.0 * The native viewer now supports full screen over a subset of monitors (e.g. 2 out of 3), and reacts properly to monitors being added or removed * Recent server history in the native viewer * The native viewer now has an option to reconnect if the connection is dropped * Translations are now enabled on Windows and macOS for the native viewer * The native viewer now respects the system security policy * Better handling of accented keys in the Java viewer * The Unix servers can now listen to both a Unix socket and a TCP port at the same time * The network code in both the servers and the native viewer has been restructured to give a more responsive experience * The vncserver service now correctly handles settings set to "0" * Fixed the clipboard Unicode handling in both the native viewer and the servers * Support for pointer "warping" in Xvnc and the native viewer, enabling e.g. FPS games - Update to tigervnc 1.11.0 * A security issue has been fixed in how the viewers handle TLS certificate exceptions * vncserver has gotten a major redesign to be compatible with modern distributions * The native viewer now has touch gestures to handle certain mouse actions (e.g. scroll wheel) * Middle mouse button emulation in the native viewer, for devices with only two mouse buttons * The Java viewer now supports Java 9+, but also now requires Java 8+ * Support for alpha cursors in the Java viewer (a feature already supported in the native viewer) * The password and username can now be specified via the environment for the native viewer * Support for building Xvnc/libvnc.so with Xorg 1.20.7+ and deprecate support for Xorg older than 1.16 * The official builds have been fixed to work on the upcoming macOS 11 * The Windows server (WinVNC) is now packaged separately as it is unmaintained and buggy - Removed patches (included in 1.12.0): * U_viewer-reset-ctrl-alt-to-menu-state-on-focus.patch * tigervnc-fix-saving-of-bad-server-certs.patch * u_xorg-server-1.20.7-ddxInputThreadInit.patch * U_0001-Properly-store-certificate-exceptions.patch * U_0002-Properly-store-certificate-exceptions-in-Java-viewer.patch * tigervnc-FIPS-use-RFC7919.patch OBS-URL: https://build.opensuse.org/request/show/955605 OBS-URL: https://build.opensuse.org/package/show/X11:XOrg/tigervnc?expand=0&rev=221
85 lines
2.5 KiB
Diff
85 lines
2.5 KiB
Diff
Index: tigervnc-1.12.0/vncviewer/DesktopWindow.cxx
|
|
===================================================================
|
|
--- tigervnc-1.12.0.orig/vncviewer/DesktopWindow.cxx
|
|
+++ tigervnc-1.12.0/vncviewer/DesktopWindow.cxx
|
|
@@ -236,6 +236,8 @@ DesktopWindow::~DesktopWindow()
|
|
|
|
delete statsGraph;
|
|
|
|
+ delete viewport;
|
|
+
|
|
instances.erase(this);
|
|
|
|
if (instances.size() == 0)
|
|
Index: tigervnc-1.12.0/vncviewer/Viewport.cxx
|
|
===================================================================
|
|
--- tigervnc-1.12.0.orig/vncviewer/Viewport.cxx
|
|
+++ tigervnc-1.12.0/vncviewer/Viewport.cxx
|
|
@@ -192,6 +192,18 @@ Viewport::Viewport(int w, int h, const r
|
|
|
|
Viewport::~Viewport()
|
|
{
|
|
+ // Send release for every pressed key
|
|
+ for(DownMap::iterator iter = downKeySym.begin(); iter != downKeySym.end(); ++iter) {
|
|
+ try {
|
|
+ if (iter->first > 0xff)
|
|
+ cc->writer()->writeKeyEvent(iter->second, 0, false);
|
|
+ else
|
|
+ cc->writer()->writeKeyEvent(iter->second, iter->first, false);
|
|
+ } catch (rdr::Exception& e) {
|
|
+ // ignore
|
|
+ }
|
|
+ }
|
|
+
|
|
// Unregister all timeouts in case they get a change tro trigger
|
|
// again later when this object is already gone.
|
|
Fl::remove_timeout(handlePointerTimeout, this);
|
|
Index: tigervnc-1.12.0/vncviewer/vncviewer.cxx
|
|
===================================================================
|
|
--- tigervnc-1.12.0.orig/vncviewer/vncviewer.cxx
|
|
+++ tigervnc-1.12.0/vncviewer/vncviewer.cxx
|
|
@@ -113,6 +113,7 @@ static const char *about_text()
|
|
return buffer;
|
|
}
|
|
|
|
+static CConn *cc;
|
|
|
|
void abort_vncviewer(const char *error, ...)
|
|
{
|
|
@@ -176,8 +177,6 @@ void about_vncviewer()
|
|
static void mainloop(const char* vncserver, network::Socket* sock)
|
|
{
|
|
while (true) {
|
|
- CConn *cc;
|
|
-
|
|
exitMainloop = false;
|
|
|
|
cc = new CConn(vncServerName, sock);
|
|
@@ -262,6 +261,16 @@ static void CleanupSignalHandler(int sig
|
|
// CleanupSignalHandler allows C++ object cleanup to happen because it calls
|
|
// exit() rather than the default which is to abort.
|
|
vlog.info(_("Termination signal %d has been received. TigerVNC Viewer will now exit."), sig);
|
|
+ delete cc;
|
|
+ exit(1);
|
|
+}
|
|
+
|
|
+static int CleanupXIOErrorHandler(Display *dpy)
|
|
+{
|
|
+ // CleanupSignalHandler allows C++ object cleanup to happen because it calls
|
|
+ // exit() rather than the default which is to abort.
|
|
+ vlog.info("XErrorHandler called");
|
|
+ delete cc;
|
|
exit(1);
|
|
}
|
|
|
|
@@ -744,6 +753,9 @@ int main(int argc, char** argv)
|
|
XkbSetDetectableAutoRepeat(fl_display, True, NULL);
|
|
#endif
|
|
|
|
+ fl_open_display();
|
|
+ XSetIOErrorHandler(CleanupXIOErrorHandler);
|
|
+
|
|
init_fltk();
|
|
enable_touch();
|
|
|