From 66f1db543b425f6fe64d437477e6f78924ec57be Mon Sep 17 00:00:00 2001 From: Pierre Ossman Date: Thu, 2 May 2019 12:32:03 +0200 Subject: 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. --- win/rfb_win32/Clipboard.cxx | 4 ++-- win/rfb_win32/Clipboard.h | 3 ++- win/rfb_win32/SDisplay.cxx | 12 +++++------- win/rfb_win32/SDisplay.h | 5 +++-- 4 files changed, 12 insertions(+), 12 deletions(-) (limited to 'win') diff --git a/win/rfb_win32/Clipboard.cxx b/win/rfb_win32/Clipboard.cxx index fca6c1df..49526956 100644 --- a/win/rfb_win32/Clipboard.cxx +++ b/win/rfb_win32/Clipboard.cxx @@ -113,11 +113,11 @@ Clipboard::processMessage(UINT msg, WPARAM wParam, LPARAM lParam) { // Notify clients if (notifier) { if (!clipdata) { - notifier->notifyClipboardChanged(0, 0); + notifier->notifyClipboardChanged(0); } else { CharArray unix_text(convertLF(clipdata, strlen(clipdata))); removeNonISOLatin1Chars(unix_text.buf); - notifier->notifyClipboardChanged(unix_text.buf, strlen(unix_text.buf)); + notifier->notifyClipboardChanged(unix_text.buf); } } else { vlog.debug("no clipboard notifier registered"); diff --git a/win/rfb_win32/Clipboard.h b/win/rfb_win32/Clipboard.h index 3da7bfca..c69e981f 100644 --- a/win/rfb_win32/Clipboard.h +++ b/win/rfb_win32/Clipboard.h @@ -1,4 +1,5 @@ /* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved. + * Copyright 2016-2019 Pierre Ossman 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 @@ -38,7 +39,7 @@ namespace rfb { // -=- Abstract base class for callback recipients class Notifier { public: - virtual void notifyClipboardChanged(const char* text, int len) = 0; + virtual void notifyClipboardChanged(const char* text) = 0; virtual ~Notifier() {}; }; diff --git a/win/rfb_win32/SDisplay.cxx b/win/rfb_win32/SDisplay.cxx index 2cedc4a8..2c91e3f4 100644 --- a/win/rfb_win32/SDisplay.cxx +++ b/win/rfb_win32/SDisplay.cxx @@ -1,4 +1,5 @@ /* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved. + * Copyright 2011-2019 Pierre Ossman 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 @@ -328,19 +329,16 @@ bool SDisplay::checkLedState() { return false; } -void SDisplay::clientCutText(const char* text, int len) { - CharArray clip_sz(len+1); - memcpy(clip_sz.buf, text, len); - clip_sz.buf[len] = 0; - clipboard->setClipText(clip_sz.buf); +void SDisplay::clientCutText(const char* text) { + clipboard->setClipText(text); } void -SDisplay::notifyClipboardChanged(const char* text, int len) { +SDisplay::notifyClipboardChanged(const char* text) { vlog.debug("clipboard text changed"); if (server) - server->serverCutText(text, len); + server->serverCutText(text); } diff --git a/win/rfb_win32/SDisplay.h b/win/rfb_win32/SDisplay.h index 6dbfabbc..1773b785 100644 --- a/win/rfb_win32/SDisplay.h +++ b/win/rfb_win32/SDisplay.h @@ -1,4 +1,5 @@ /* Copyright (C) 2002-2005 RealVNC Ltd. All Rights Reserved. + * Copyright 2011-2019 Pierre Ossman 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 @@ -77,11 +78,11 @@ namespace rfb { const char* userName); virtual void pointerEvent(const Point& pos, int buttonmask); virtual void keyEvent(rdr::U32 keysym, rdr::U32 keycode, bool down); - virtual void clientCutText(const char* str, int len); + virtual void clientCutText(const char* str); // -=- Clipboard - virtual void notifyClipboardChanged(const char* text, int len); + virtual void notifyClipboardChanged(const char* text); // -=- Display events -- cgit v1.2.3