From 85074ef73be3f61167e94ce83d40269a5523ac93 Mon Sep 17 00:00:00 2001 From: Ondrej Holy Date: Wed, 7 Oct 2015 15:14:37 +0200 Subject: Add initial seamless mode support Seamless mode is a way to use guest applications directly on the client system desktop side-by-side with client applications. Add a new capability VD_AGENT_CAP_SEAMLESS_MODE. It indicats ability to handle following seamless mode messages. Add a message VD_AGENT_SEAMLESS_MODE. It is used to enable/disable sending VD_AGENT_SEAMLESS_MODE_LIST messages. It is sent from client to agent once the change is needed. Add a message VD_AGENT_SEAMLESS_MODE_LIST. It is used to sent a list of visible rectangle areas. It is sent periodically from agent to client with every list change. https://bugs.freedesktop.org/show_bug.cgi?id=39238 --- spice/vd_agent.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/spice/vd_agent.h b/spice/vd_agent.h index 445b458..cdf2adf 100644 --- a/spice/vd_agent.h +++ b/spice/vd_agent.h @@ -78,6 +78,8 @@ enum { VD_AGENT_CLIENT_DISCONNECTED, VD_AGENT_MAX_CLIPBOARD, VD_AGENT_AUDIO_VOLUME_SYNC, + VD_AGENT_SEAMLESS_MODE, + VD_AGENT_SEAMLESS_MODE_LIST, VD_AGENT_END_MESSAGE, }; @@ -214,6 +216,22 @@ typedef struct SPICE_ATTR_PACKED VDAgentAudioVolumeSync { uint16_t volume[0]; } VDAgentAudioVolumeSync; +typedef struct SPICE_ATTR_PACKED VDAgentSeamlessMode { + uint8_t enabled; +} VDAgentSeamlessMode; + +typedef struct SPICE_ATTR_PACKED VDAgentSeamlessModeWindow { + int32_t x; + int32_t y; + uint32_t w; + uint32_t h; +} VDAgentSeamlessModeWindow; + +typedef struct SPICE_ATTR_PACKED VDAgentSeamlessModeList { + uint32_t num_of_windows; + VDAgentSeamlessModeWindow windows[0]; +} VDAgentSeamlessModeList; + enum { VD_AGENT_CAP_MOUSE_STATE = 0, VD_AGENT_CAP_MONITORS_CONFIG, @@ -228,6 +246,7 @@ enum { VD_AGENT_CAP_MAX_CLIPBOARD, VD_AGENT_CAP_AUDIO_VOLUME_SYNC, VD_AGENT_CAP_MONITORS_CONFIG_POSITION, + VD_AGENT_CAP_SEAMLESS_MODE, VD_AGENT_END_CAP, }; -- cgit v1.2.3