summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Levy <alevy@redhat.com>2010-08-29 17:55:07 +0300
committerAlon Levy <alevy@redhat.com>2010-08-31 11:08:33 +0300
commit31d502522a99bf759e5704421f3336f60c3b0241 (patch)
treea8ff7f28b393f3e8a853c3c86fccbb2e1b8989a0
parent2335032d3b16fd2d16a7ba5be36df2265764dee2 (diff)
add vd_agent announce capabilities message
-rw-r--r--spice/vd_agent.h28
1 files changed, 28 insertions, 0 deletions
diff --git a/spice/vd_agent.h b/spice/vd_agent.h
index 1fcda88..9e5adec 100644
--- a/spice/vd_agent.h
+++ b/spice/vd_agent.h
@@ -64,6 +64,8 @@ enum {
VD_AGENT_REPLY,
VD_AGENT_CLIPBOARD,
VD_AGENT_DISPLAY_CONFIG,
+ VD_AGENT_ANNOUNCE_CAPABILITIES,
+ VD_AGENT_END_MESSAGE,
};
typedef struct SPICE_ATTR_PACKED VDAgentMonConfig {
@@ -129,6 +131,32 @@ enum {
VD_AGENT_CLIPBOARD_UTF8_TEXT = 1,
};
+enum {
+ VD_AGENT_CAP_MOUSE_STATE = 0,
+ VD_AGENT_CAP_MONITORS_CONFIG,
+ VD_AGENT_CAP_REPLY,
+ VD_AGENT_CAP_CLIPBOARD,
+ VD_AGENT_CAP_DISPLAY_CONFIG,
+ VD_AGENT_END_CAP,
+};
+
+typedef struct SPICE_ATTR_PACKED VDAgentAnnounceCapabilities {
+ uint32_t request;
+ uint32_t caps[0];
+} VDAgentAnnounceCapabilities;
+
+#define VD_AGENT_CAPS_SIZE_FROM_MSG_SIZE(msg_size) \
+ (((msg_size) - sizeof(VDAgentAnnounceCapabilities)) / sizeof(uint32_t))
+
+#define VD_AGENT_CAPS_SIZE ((VD_AGENT_END_CAP + 31) / 32)
+
+#define VD_AGENT_CAPS_BYTES (((VD_AGENT_END_CAP + 31) / 8) & ~3)
+
+#define VD_AGENT_HAS_CAPABILITY(caps, caps_size, index) \
+ ((index) < (caps_size * 32) && ((caps)[(index) / 32] & (1 << ((index) % 32))))
+
+#define VD_AGENT_SET_CAPABILITY(caps, index) \
+ { (caps)[(index) / 32] |= (1 << ((index) % 32)); }
#include <spice/end-packed.h>