11c55f8dcd
FreeRDP uses clipboard->data to cache the result of the Windows->X11 clipboard format conversion, and xf_cliprdr_process_selection_request() immediately provides this result to local applications if they request the same clipboard format again. This saves us a possibly costly conversion in case where the user pastes data repeatedly. However, this caching mechanism did not support raw clipboard transfers where the unmodified data is passed between two FreeRDP clients. We use the same XClipboard protocol for this, so the clipboard->data is in play. We clear the cached value when we receive new data from the server, so initially raw transfers are fine. But if some local application (e.g., a clipboard manager) asks for some data format before the data is pasted into the second FreeRDP session then clipboard->data will contain the *converted* data. And this converted cached data will be provided to the second FreeRDP session as a part of the raw data transfer. Instead we should have provided the original data. In order to achieve this we are now caching the original data in the same way as the converted one, and the original data is now correctly provided when the second FreeRDP session asks for a raw data transfer. |
||
---|---|---|
.. | ||
Android | ||
common | ||
DirectFB | ||
iOS | ||
Mac | ||
Sample | ||
Wayland | ||
Windows | ||
X11 | ||
.gitignore | ||
CMakeLists.txt | ||
freerdp-client.pc.in | ||
FreeRDP-ClientConfig.cmake.in |