[Spice-devel] [PATCH 1/3] Add a virtio_write_clipboard() function
Marc-André Lureau
marcandre.lureau at gmail.com
Thu Nov 14 08:03:17 PST 2013
From: Marc-André Lureau <marcandre.lureau at gmail.com>
Make it easier later to send customized clipboard message
---
src/vdagentd.c | 50 +++++++++++++++++++++++++++++---------------------
1 file changed, 29 insertions(+), 21 deletions(-)
diff --git a/src/vdagentd.c b/src/vdagentd.c
index cfb7acc..eed183b 100644
--- a/src/vdagentd.c
+++ b/src/vdagentd.c
@@ -382,6 +382,34 @@ size_error:
return 0;
}
+static void virtio_write_clipboard(uint8_t selection, uint32_t msg_type,
+ uint32_t data_type, const uint8_t *data, uint32_t data_size)
+{
+ uint32_t size = data_size;
+
+ if (VD_AGENT_HAS_CAPABILITY(capabilities, capabilities_size,
+ VD_AGENT_CAP_CLIPBOARD_SELECTION)) {
+ size += 4;
+ }
+ if (data_type != -1) {
+ size += 4;
+ }
+
+ vdagent_virtio_port_write_start(virtio_port, VDP_CLIENT_PORT, msg_type,
+ 0, size);
+
+ if (VD_AGENT_HAS_CAPABILITY(capabilities, capabilities_size,
+ VD_AGENT_CAP_CLIPBOARD_SELECTION)) {
+ uint8_t sel[4] = { selection, 0, 0, 0 };
+ vdagent_virtio_port_write_append(virtio_port, sel, 4);
+ }
+ if (data_type != -1) {
+ vdagent_virtio_port_write_append(virtio_port, (uint8_t*)&data_type, 4);
+ }
+
+ vdagent_virtio_port_write_append(virtio_port, data, data_size);
+}
+
/* vdagentd <-> vdagent communication handling */
int do_agent_clipboard(struct udscs_connection *conn,
struct udscs_message_header *header, const uint8_t *data)
@@ -439,27 +467,7 @@ int do_agent_clipboard(struct udscs_connection *conn,
return -1;
}
- if (VD_AGENT_HAS_CAPABILITY(capabilities, capabilities_size,
- VD_AGENT_CAP_CLIPBOARD_SELECTION)) {
- size += 4;
- }
- if (data_type != -1) {
- size += 4;
- }
-
- vdagent_virtio_port_write_start(virtio_port, VDP_CLIENT_PORT, msg_type,
- 0, size);
-
- if (VD_AGENT_HAS_CAPABILITY(capabilities, capabilities_size,
- VD_AGENT_CAP_CLIPBOARD_SELECTION)) {
- uint8_t sel[4] = { selection, 0, 0, 0 };
- vdagent_virtio_port_write_append(virtio_port, sel, 4);
- }
- if (data_type != -1) {
- vdagent_virtio_port_write_append(virtio_port, (uint8_t*)&data_type, 4);
- }
-
- vdagent_virtio_port_write_append(virtio_port, data, header->size);
+ virtio_write_clipboard(selection, msg_type, data_type, data, header->size);
return 0;
--
1.8.3.1
More information about the Spice-devel
mailing list