Clean up internal clipboard handling
We now filter incoming data, which means we can start assuming the
clipboard data is always null terminated. This allows us to clean
up a lot of the internal handling.
diff --git a/vncviewer/CConn.cxx b/vncviewer/CConn.cxx
index b4610e6..2cc1fe4 100644
--- a/vncviewer/CConn.cxx
+++ b/vncviewer/CConn.cxx
@@ -377,9 +377,9 @@
fl_beep();
}
-void CConn::serverCutText(const char* str, rdr::U32 len)
+void CConn::serverCutText(const char* str)
{
- desktop->serverCutText(str, len);
+ desktop->serverCutText(str);
}
void CConn::dataRect(const Rect& r, int encoding)
diff --git a/vncviewer/CConn.h b/vncviewer/CConn.h
index 2e3362c..38e09c2 100644
--- a/vncviewer/CConn.h
+++ b/vncviewer/CConn.h
@@ -61,7 +61,7 @@
void bell();
- void serverCutText(const char* str, rdr::U32 len);
+ void serverCutText(const char* str);
void framebufferUpdateStart();
void framebufferUpdateEnd();
diff --git a/vncviewer/DesktopWindow.cxx b/vncviewer/DesktopWindow.cxx
index 150c39b..4429e77 100644
--- a/vncviewer/DesktopWindow.cxx
+++ b/vncviewer/DesktopWindow.cxx
@@ -276,9 +276,9 @@
}
-void DesktopWindow::serverCutText(const char* str, rdr::U32 len)
+void DesktopWindow::serverCutText(const char* str)
{
- viewport->serverCutText(str, len);
+ viewport->serverCutText(str);
}
diff --git a/vncviewer/DesktopWindow.h b/vncviewer/DesktopWindow.h
index 6ec8e1b..fe938d9 100644
--- a/vncviewer/DesktopWindow.h
+++ b/vncviewer/DesktopWindow.h
@@ -63,7 +63,7 @@
void resizeFramebuffer(int new_w, int new_h);
// Incoming clipboard from server
- void serverCutText(const char* str, rdr::U32 len);
+ void serverCutText(const char* str);
// New image for the locally rendered cursor
void setCursor(int width, int height, const rfb::Point& hotspot,
diff --git a/vncviewer/Viewport.cxx b/vncviewer/Viewport.cxx
index 15a3ec4..5e49599 100644
--- a/vncviewer/Viewport.cxx
+++ b/vncviewer/Viewport.cxx
@@ -232,7 +232,7 @@
damage(FL_DAMAGE_USER1, r.tl.x + x(), r.tl.y + y(), r.width(), r.height());
}
-void Viewport::serverCutText(const char* str, rdr::U32 len)
+void Viewport::serverCutText(const char* str)
{
char *buffer;
int size, ret;
@@ -242,7 +242,7 @@
if (!acceptClipboard)
return;
- size = fl_utf8froma(NULL, 0, str, len);
+ size = fl_utf8froma(NULL, 0, str, strlen(str));
if (size <= 0)
return;
@@ -250,7 +250,7 @@
buffer = new char[size];
- ret = fl_utf8froma(buffer, size, str, len);
+ ret = fl_utf8froma(buffer, size, str, strlen(str));
assert(ret < size);
vlog.debug("Got clipboard data (%d bytes)", (int)strlen(buffer));
@@ -577,7 +577,7 @@
vlog.debug("Sending clipboard data (%d bytes)", (int)strlen(filtered));
try {
- cc->writer()->writeClientCutText(filtered, strlen(filtered));
+ cc->writer()->writeClientCutText(filtered);
} catch (rdr::Exception& e) {
vlog.error("%s", e.str());
exit_vncviewer(e.str());
@@ -768,7 +768,7 @@
size_t len = strlen(pendingClientCutText);
vlog.debug("Sending pending clipboard data (%d bytes)", (int)len);
try {
- cc->writer()->writeClientCutText(pendingClientCutText, len);
+ cc->writer()->writeClientCutText(pendingClientCutText);
} catch (rdr::Exception& e) {
vlog.error("%s", e.str());
exit_vncviewer(e.str());
diff --git a/vncviewer/Viewport.h b/vncviewer/Viewport.h
index be2192b..c2c9872 100644
--- a/vncviewer/Viewport.h
+++ b/vncviewer/Viewport.h
@@ -1,5 +1,5 @@
/* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved.
- * Copyright 2011 Pierre Ossman <ossman@cendio.se> for Cendio AB
+ * Copyright 2011-2019 Pierre Ossman <ossman@cendio.se> for Cendio AB
*
* This is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -46,7 +46,7 @@
void updateWindow();
// Incoming clipboard from server
- void serverCutText(const char* str, rdr::U32 len);
+ void serverCutText(const char* str);
// New image for the locally rendered cursor
void setCursor(int width, int height, const rfb::Point& hotspot,