FreeRDP/include/freerdp
Pascal Nowack d7d3055b5f X11/cliprdr: Rework server to client clipboard handling
The purpose of clipboard data locking is to make the other peer
retaining the current file list until a pending paste operation is done,
even though the clipboard selection changed.
As it may be difficult to determine, when a lock is needed, imitate the
same behaviour as mstsc:
When the server side supports clipboard data locking, always attempt to
lock the file list on the server regardless of what is advertised in a
FormatList PDU.
The Lock Clipboard Data PDU can even be already sent, before the
Format List Response PDU is sent.
This is also what mstsc, does: First, lock the new (potential) file
list, then unlock the file list, when the pending paste operation is
done.
So, rework the current clipboard implementation in that direction.

Since the implementation for timeouts for old file lists is a bit hard,
for now always force unlock pending locks, when the selection changes.
However, timeouts for old file lists can still be added in the future.

The reworked clipboard handling is done with the help of three hash
tables:

1. The inode table: This hash table manages all inodes for each file.
   The keys in this table are the inodes themselves, while the values
   the files and directories and their attributes (file size, last write
   time, etc.).
2. The clipdata table: This table manages the locks for each file list.
   The keys in this table represent the clip data id and the values the
   clip data entries, which have a reference to the clip data dir, a
   directory containing the whole selection, and some helper attributes,
   like the clip data id itself.
3. The request table: Every file size or file range request is managed
   here. When a FileContentsRequest is made, its stream id with the
   respective details are added to this table. When a response is
   received, these details can then be easily looked up here.
2023-07-20 11:36:11 +02:00
..
cache [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
channels [client,file] add WebAuthN rdp file parsing support 2023-07-10 10:45:28 +02:00
client X11/cliprdr: Rework server to client clipboard handling 2023-07-20 11:36:11 +02:00
codec [codec,rfx] missing palette setting api. 2023-06-27 08:54:54 +02:00
crypto [crypto,cert] add openssl3 support 2023-04-28 08:33:06 +02:00
emulate/scard [includes] improved c++ guards 2023-03-15 08:22:23 +01:00
gdi [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
locale [winpr,input] use enum for keyboard types 2023-04-21 12:31:51 +02:00
server server/audin: Remove wrong comment 2023-07-20 11:36:11 +02:00
utils [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
addin.h [includes] improved c++ guards 2023-03-15 08:22:23 +01:00
altsec.h [includes] improved c++ guards 2023-03-15 08:22:23 +01:00
api.h [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
assistance.h [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
autodetect.h [core,autodetect] improve logging 2023-05-03 13:46:39 +02:00
client.h [client,common] move pen detection to client common 2023-06-26 11:22:32 +02:00
codecs.h [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
constants.h added SDL2 client 2023-01-10 17:38:00 +01:00
display.h [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
dvc.h [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
error.h Set last error on activation timeout (#7502) 2021-12-17 17:28:41 +01:00
event.h [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
extension.h [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
freerdp.h Use popup browser for AAD auth in SDL client 2023-05-23 06:04:55 +02:00
graphics.h [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
heartbeat.h [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
input.h fix typo 2023-05-11 16:31:42 +02:00
license.h [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
listener.h [server,core] add CheckPeerAcceptRestrictions 2023-06-14 17:15:21 +02:00
log.h Added headers for converting logging in libfreerdp, channels, clients and servers. 2014-09-09 16:33:05 +02:00
message.h [includes] improved c++ guards 2023-03-15 08:22:23 +01:00
metrics.h [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
peer.h [includes] improved c++ guards 2023-03-15 08:22:23 +01:00
pointer.h pointer: Rename position to hotspot position in Color Pointer Update 2023-04-14 08:31:20 +02:00
primary.h [includes] improved c++ guards 2023-03-15 08:22:23 +01:00
primitives.h [includes] improved c++ guards 2023-03-15 08:22:23 +01:00
rail.h [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
redirection.h [core,redirection] Fix sending redirection certificate 2023-04-11 10:29:16 +02:00
scancode.h Fixed all Wdocumentation warnings 2022-12-12 14:24:55 +01:00
secondary.h [includes] improved c++ guards 2023-03-15 08:22:23 +01:00
session.h [includes] improved c++ guards 2023-03-15 08:22:23 +01:00
settings.h [client,file] add WebAuthN rdp file parsing support 2023-07-10 10:45:28 +02:00
streamdump.h [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
svc.h [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
transport_io.h [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
types.h [core,autodetect] revert to [MS-RDPBCGR] states 2023-04-24 14:18:20 +02:00
update.h [includes] untangled circular includes 2023-03-15 08:22:23 +01:00
window.h [includes] untangled circular includes 2023-03-15 08:22:23 +01:00