From a419692ea9f62cd32f0a211ff578e536c15a496d Mon Sep 17 00:00:00 2001 From: Frediano Ziglio Date: Tue, 6 Jun 2017 10:39:09 +0100 Subject: [PATCH] Add support for setting cursor shape from guest This allows to better support client mouse using streaming device Signed-off-by: Frediano Ziglio Acked-by: Christophe de Dinechin --- spice/stream-device.h | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/spice/stream-device.h b/spice/stream-device.h index 67d70e1..d8612a4 100644 --- a/spice/stream-device.h +++ b/spice/stream-device.h @@ -85,6 +85,8 @@ typedef enum StreamMsgType { STREAM_TYPE_START_STOP, /* server notify errors to guest */ STREAM_TYPE_NOTIFY_ERROR, + /* guest cursor */ + STREAM_TYPE_CURSOR_SET, } StreamMsgType; /* Generic extension capabilities. @@ -164,4 +166,35 @@ typedef struct StreamMsgNotifyError { uint8_t msg[0]; } StreamMsgNotifyError; +#define STREAM_MSG_CURSOR_SET_MAX_WIDTH 1024 +#define STREAM_MSG_CURSOR_SET_MAX_HEIGHT 1024 + +/* Guest cursor. + * This message is sent by the guest to the host. + * + * States allowed: Streaming + */ +typedef struct StreamMsgCursorSet { + /* basic cursor information */ + /* for security reasons width and height should + * be limited to STREAM_MSG_CURSOR_SET_MAX_WIDTH and + * STREAM_MSG_CURSOR_SET_MAX_HEIGHT */ + uint16_t width; + uint16_t height; + uint16_t hot_spot_x; + uint16_t hot_spot_y; + /* Cursor type, as defined by SpiceCursorType. + * Only ALPHA, COLOR24 and COLOR32 are allowed by this protocol + */ + uint8_t type; + + uint8_t padding1[3]; + + /* cursor data. + * Format and size depends on cursor_header type and size + */ + uint8_t data[0]; +} StreamMsgCursorSet; + + #endif /* SPICE_STREAM_DEVICE_H_ */