mirror of
https://github.com/gnif/LookingGlass.git
synced 2024-11-10 08:38:20 +00:00
7f5f46c448
This commit restructures the Wayland clipboard handling for host->VM. Before, we select one clipboard format and buffers the data for it, to be presented to spice when needed. Now, we simply offer all clipboard formats supported, and only when spice asks for the data do we actually read the wl_data_offer. The wl_data_offer is kept around until a new offer is presented, the offer invalidated, or when we lose keyboard focus. This is in accordance with the specification for wl_data_device::selection, which states that: > The data_offer is valid until a new data_offer or NULL is received or > until the client loses keyboard focus. The client must destroy the > previous selection data_offer, if any, upon receiving this event. We still buffer the entire clipboard data into memory because we have no knowledge of the clipboard data size in advance and cannot do incremental transfers. Furthermore, if the user performs drag-and-drop on our window, we may have need to handle multiple wl_data_offer objects at the same time. Therefore, instead of storing state on the global wlCb object, we instead allocate memory and store it as user_data on the wl_data_offer. As a result, we also handle drag-and-drop so that we can free the memory. |
||
---|---|---|
.. | ||
SDL | ||
Wayland | ||
X11 | ||
CMakeLists.txt |