--- src/vdagent/clipboard.c | 11 +++++++++++ src/vdagent/clipboard.h | 2 ++ src/vdagent/vdagent.c | 3 +++ 3 files changed, 16 insertions(+) diff --git a/src/vdagent/clipboard.c b/src/vdagent/clipboard.c index 101e535..63f8527 100644 --- a/src/vdagent/clipboard.c +++ b/src/vdagent/clipboard.c @@ -24,6 +24,7 @@ #include <syslog.h> #include "vdagentd-proto.h" +#include "vdagentd-proto-strings.h" #include "spice/vd_agent.h" #include "clipboard.h" @@ -60,6 +61,7 @@ typedef struct { struct VDAgentClipboards { struct udscs_connection *conn; Selection selections[SELECTION_COUNT]; + guint protocol; }; static const struct { @@ -401,6 +403,14 @@ err: VD_AGENT_CLIPBOARD_NONE, NULL, 0); } +void vdagent_clipboards_set_protocol(VDAgentClipboards *c, guint protocol) +{ + g_return_if_fail(protocol <= CLIPBOARD_PROTOCOL_SELECTION); + c->protocol = protocol; + syslog(LOG_DEBUG, "Clipboard protocol set to %s", + vdagentd_clipboard_protocols[protocol]); +} + VDAgentClipboards *vdagent_clipboards_init(struct udscs_connection *conn) { guint sel_id; @@ -412,6 +422,7 @@ VDAgentClipboards *vdagent_clipboards_init(struct udscs_connection *conn) VDAgentClipboards *c; c = g_new0(VDAgentClipboards, 1); c->conn = conn; + c->protocol = CLIPBOARD_PROTOCOL_COMPATIBILITY; for (sel_id = 0; sel_id < SELECTION_COUNT; sel_id++) { GtkClipboard *clipboard = gtk_clipboard_get(sel_atom[sel_id]); diff --git a/src/vdagent/clipboard.h b/src/vdagent/clipboard.h index e007a37..d9cc22c 100644 --- a/src/vdagent/clipboard.h +++ b/src/vdagent/clipboard.h @@ -28,6 +28,8 @@ typedef struct VDAgentClipboards VDAgentClipboards; VDAgentClipboards *vdagent_clipboards_init(struct udscs_connection *conn); void vdagent_clipboards_finalize(VDAgentClipboards *c, gboolean conn_alive); +void vdagent_clipboards_set_protocol(VDAgentClipboards *c, guint protocol); + void vdagent_clipboard_request(VDAgentClipboards *c, guint sel_id, guint type); void vdagent_clipboard_release(VDAgentClipboards *c, guint sel_id); diff --git a/src/vdagent/vdagent.c b/src/vdagent/vdagent.c index 711e4f8..85aa6ae 100644 --- a/src/vdagent/vdagent.c +++ b/src/vdagent/vdagent.c @@ -192,6 +192,9 @@ static void daemon_read_complete(struct udscs_connection **connp, case VDAGENTD_CLIPBOARD_RELEASE: vdagent_clipboard_release(agent->clipboards, header->arg1); break; + case VDAGENTD_CLIPBOARD_PROTOCOL: + vdagent_clipboards_set_protocol(agent->clipboards, header->arg1); + break; case VDAGENTD_VERSION: if (strcmp((char *)data, VERSION) != 0) { syslog(LOG_INFO, "vdagentd version mismatch: got %s expected %s", -- 2.17.0 _______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel