SHA256
1
0
forked from pool/tigervnc
tigervnc/tigervnc-clean-pressed-key-on-exit.patch
Stefan Dirsch e5b1bdbcef Accepting request 955605 from home:jtorres:branches:X11:XOrg
- 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
2022-02-17 10:42:51 +00:00

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();