So, I applied these patches, and generated the messages with the new
code and compared it to the old hand-coded message.h file. I had to re-
arrange a bunch of the newly-generated code to get a readable diff, but
I end up with the attached output. A few notable changes:

- Quite a few fields have changed type (uint32_t => uint16_t in most
cases, a few cases of uint32_t => uint8_t)

- SpiceMsgData lost its data_size field?

- SpiceMsgPlaybackPacket seems to have had some fields re-arranged. Old
type was { time, data, data_size }. New type is { time, data_size, data
}

- smartcard messages are gone

Jonathon



On Thu, 2019-02-21 at 10:38 +0000, Frediano Ziglio wrote:
> Signed-off-by: Frediano Ziglio <fzig...@redhat.com>
> ---
>  common/messages.h | 495 +-------------------------------------------
> --
>  spice.proto       | 192 +++++++++---------
>  2 files changed, 102 insertions(+), 585 deletions(-)
> 
> diff --git a/common/messages.h b/common/messages.h
> index aae3212..43d0661 100644
> --- a/common/messages.h
> +++ b/common/messages.h
> @@ -42,10 +42,6 @@
>  
>  SPICE_BEGIN_DECLS
>  
> -typedef struct SpiceMsgData {
> -    uint8_t data[0];
> -} SpiceMsgData;
> -
>  typedef struct SpiceMsgCompressedData {
>      uint8_t type;
>      uint32_t uncompressed_size;
> @@ -53,438 +49,8 @@ typedef struct SpiceMsgCompressedData {
>      uint8_t *compressed_data;
>  } SpiceMsgCompressedData;
>  
> -typedef struct SpiceMsgEmpty {
> -    uint8_t padding;
> -} SpiceMsgEmpty;
> -
> -typedef struct SpiceMsgInputsInit {
> -    uint32_t keyboard_modifiers;
> -} SpiceMsgInputsInit;
> -
> -typedef struct SpiceMsgInputsKeyModifiers {
> -    uint32_t modifiers;
> -} SpiceMsgInputsKeyModifiers;
> -
> -typedef struct SpiceMsgMainMultiMediaTime {
> -    uint32_t time;
> -} SpiceMsgMainMultiMediaTime;
> -
> -typedef struct SpiceMigrationDstInfo {
> -    uint16_t port;
> -    uint16_t sport;
> -    uint32_t host_size;
> -    uint8_t *host_data;
> -    uint32_t cert_subject_size;
> -    uint8_t *cert_subject_data;
> -} SpiceMigrationDstInfo;
> -
> -typedef struct SpiceMsgMainMigrationBegin {
> -    SpiceMigrationDstInfo dst_info;
> -} SpiceMsgMainMigrationBegin;
> -
> -typedef struct SpiceMsgMainMigrateBeginSeamless {
> -    SpiceMigrationDstInfo dst_info;
> -    uint32_t src_mig_version;
> -} SpiceMsgMainMigrateBeginSeamless;
> -
> -typedef struct SpiceMsgcMainMigrateDstDoSeamless {
> -    uint32_t src_version;
> -} SpiceMsgcMainMigrateDstDoSeamless;
> -
> -typedef struct SpiceMsgMainMigrationSwitchHost {
> -    uint16_t port;
> -    uint16_t sport;
> -    uint32_t host_size;
> -    uint8_t *host_data;
> -    uint32_t cert_subject_size;
> -    uint8_t *cert_subject_data;
> -} SpiceMsgMainMigrationSwitchHost;
> -
> -
> -typedef struct SpiceMsgMigrate {
> -    uint32_t flags;
> -} SpiceMsgMigrate;
> -
> -typedef struct SpiceResourceID {
> -    uint8_t type;
> -    uint64_t id;
> -} SpiceResourceID;
> -
> -typedef struct SpiceResourceList {
> -    uint16_t count;
> -    SpiceResourceID resources[0];
> -} SpiceResourceList;
> -
> -typedef struct SpiceMsgSetAck {
> -    uint32_t generation;
> -    uint32_t window;
> -} SpiceMsgSetAck;
> -
> -typedef struct SpiceMsgcAckSync {
> -  uint32_t generation;
> -} SpiceMsgcAckSync;
> -
> -typedef struct SpiceWaitForChannel {
> -    uint8_t channel_type;
> -    uint8_t channel_id;
> -    uint64_t message_serial;
> -} SpiceWaitForChannel;
> -
> -typedef struct SpiceMsgWaitForChannels {
> -    uint8_t wait_count;
> -    SpiceWaitForChannel wait_list[0];
> -} SpiceMsgWaitForChannels;
> -
> -typedef struct SpiceChannelId {
> -    uint8_t type;
> -    uint8_t id;
> -} SpiceChannelId;
> -
> -typedef struct SpiceMsgMainInit {
> -    uint32_t session_id;
> -    uint32_t display_channels_hint;
> -    uint32_t supported_mouse_modes;
> -    uint32_t current_mouse_mode;
> -    uint32_t agent_connected;
> -    uint32_t agent_tokens;
> -    uint32_t multi_media_time;
> -    uint32_t ram_hint;
> -} SpiceMsgMainInit;
> -
> -typedef struct SpiceMsgDisconnect {
> -    uint64_t time_stamp;
> -    uint32_t reason; // SPICE_ERR_?
> -} SpiceMsgDisconnect;
> -
> -typedef struct SpiceMsgNotify {
> -    uint64_t time_stamp;
> -    uint32_t severity;
> -    uint32_t visibilty;
> -    uint32_t what;
> -    uint32_t message_len;
> -    uint8_t message[0];
> -} SpiceMsgNotify;
> -
> -typedef struct SpiceMsgChannels {
> -    uint32_t num_of_channels;
> -    SpiceChannelId channels[0];
> -} SpiceMsgChannels;
> -
> -typedef struct SpiceMsgMainName {
> -    uint32_t name_len;
> -    uint8_t name[0];
> -} SpiceMsgMainName;
> -
> -typedef struct SpiceMsgMainUuid {
> -    uint8_t uuid[16];
> -} SpiceMsgMainUuid;
> -
> -typedef struct SpiceMsgMainMouseMode {
> -    uint32_t supported_modes;
> -    uint32_t current_mode;
> -} SpiceMsgMainMouseMode;
> -
> -typedef struct SpiceMsgPing {
> -    uint32_t id;
> -    uint64_t timestamp;
> -    void *data;
> -    uint32_t data_len;
> -} SpiceMsgPing;
> -
> -typedef struct SpiceMsgMainAgentDisconnect {
> -    uint32_t error_code; // SPICE_ERR_?
> -} SpiceMsgMainAgentDisconnect;
> -
>  #define SPICE_AGENT_MAX_DATA_SIZE 2048
>  
> -typedef struct SpiceMsgMainAgentTokens {
> -    uint32_t num_tokens;
> -} SpiceMsgMainAgentTokens, SpiceMsgcMainAgentTokens,
> SpiceMsgcMainAgentStart;
> -
> -typedef struct SpiceMsgMainAgentTokens
> SpiceMsgMainAgentConnectedTokens;
> -
> -typedef struct SpiceMsgcClientInfo {
> -    uint64_t cache_size;
> -} SpiceMsgcClientInfo;
> -
> -typedef struct SpiceMsgcMainMouseModeRequest {
> -    uint32_t mode;
> -} SpiceMsgcMainMouseModeRequest;
> -
> -typedef struct SpiceCursor {
> -    uint32_t flags;
> -    SpiceCursorHeader header;
> -    uint32_t data_size;
> -    uint8_t *data;
> -} SpiceCursor;
> -
> -typedef struct SpiceMsgDisplayMode {
> -    uint32_t x_res;
> -    uint32_t y_res;
> -    uint32_t bits;
> -} SpiceMsgDisplayMode;
> -
> -typedef struct SpiceMsgSurfaceCreate {
> -    uint32_t surface_id;
> -    uint32_t width;
> -    uint32_t height;
> -    uint32_t format;
> -    uint32_t flags;
> -} SpiceMsgSurfaceCreate;
> -
> -typedef struct SpiceMsgSurfaceDestroy {
> -    uint32_t surface_id;
> -} SpiceMsgSurfaceDestroy;
> -
> -typedef struct SpiceMsgDisplayBase {
> -    uint32_t surface_id;
> -    SpiceRect box;
> -    SpiceClip clip;
> -} SpiceMsgDisplayBase;
> -
> -typedef struct SpiceMsgDisplayDrawFill {
> -    SpiceMsgDisplayBase base;
> -    SpiceFill data;
> -} SpiceMsgDisplayDrawFill;
> -
> -typedef struct SpiceMsgDisplayDrawOpaque {
> -    SpiceMsgDisplayBase base;
> -    SpiceOpaque data;
> -} SpiceMsgDisplayDrawOpaque;
> -
> -typedef struct SpiceMsgDisplayDrawCopy {
> -    SpiceMsgDisplayBase base;
> -    SpiceCopy data;
> -} SpiceMsgDisplayDrawCopy;
> -
> -typedef struct SpiceMsgDisplayDrawTransparent {
> -    SpiceMsgDisplayBase base;
> -    SpiceTransparent data;
> -} SpiceMsgDisplayDrawTransparent;
> -
> -typedef struct SpiceMsgDisplayDrawAlphaBlend {
> -    SpiceMsgDisplayBase base;
> -    SpiceAlphaBlend data;
> -} SpiceMsgDisplayDrawAlphaBlend;
> -
> -typedef struct SpiceMsgDisplayDrawComposite {
> -    SpiceMsgDisplayBase base;
> -    SpiceComposite data;
> -} SpiceMsgDisplayDrawComposite;
> -
> -typedef struct SpiceMsgDisplayCopyBits {
> -    SpiceMsgDisplayBase base;
> -    SpicePoint src_pos;
> -} SpiceMsgDisplayCopyBits;
> -
> -typedef SpiceMsgDisplayDrawCopy SpiceMsgDisplayDrawBlend;
> -
> -typedef struct SpiceMsgDisplayDrawRop3 {
> -    SpiceMsgDisplayBase base;
> -    SpiceRop3 data;
> -} SpiceMsgDisplayDrawRop3;
> -
> -typedef struct SpiceMsgDisplayDrawBlackness {
> -    SpiceMsgDisplayBase base;
> -    SpiceBlackness data;
> -} SpiceMsgDisplayDrawBlackness;
> -
> -typedef struct SpiceMsgDisplayDrawWhiteness {
> -    SpiceMsgDisplayBase base;
> -    SpiceWhiteness data;
> -} SpiceMsgDisplayDrawWhiteness;
> -
> -typedef struct SpiceMsgDisplayDrawInvers {
> -    SpiceMsgDisplayBase base;
> -    SpiceInvers data;
> -} SpiceMsgDisplayDrawInvers;
> -
> -typedef struct SpiceMsgDisplayDrawStroke {
> -    SpiceMsgDisplayBase base;
> -    SpiceStroke data;
> -} SpiceMsgDisplayDrawStroke;
> -
> -typedef struct SpiceMsgDisplayDrawText {
> -    SpiceMsgDisplayBase base;
> -    SpiceText data;
> -} SpiceMsgDisplayDrawText;
> -
> -typedef struct SpiceMsgDisplayInvalOne {
> -    uint64_t id;
> -} SpiceMsgDisplayInvalOne;
> -
> -typedef struct SpiceMsgDisplayStreamCreate {
> -    uint32_t surface_id;
> -    uint32_t id; /* Any number from 0 to SPICE_MAX_NUM_STREAMS - 1
> */
> -    uint32_t flags;
> -    uint32_t codec_type;
> -    uint64_t stamp;
> -    uint32_t stream_width;
> -    uint32_t stream_height;
> -    uint32_t src_width;
> -    uint32_t src_height;
> -    SpiceRect dest;
> -    SpiceClip clip;
> -} SpiceMsgDisplayStreamCreate;
> -
> -typedef struct SpiceStreamDataHeader {
> -    uint32_t id;
> -    uint32_t multi_media_time;
> -} SpiceStreamDataHeader;
> -
> -typedef struct SpiceMsgDisplayStreamData {
> -    SpiceStreamDataHeader base;
> -    uint32_t data_size;
> -    uint8_t data[0];
> -} SpiceMsgDisplayStreamData;
> -
> -typedef struct SpiceMsgDisplayStreamDataSized {
> -    SpiceStreamDataHeader base;
> -    uint32_t width;
> -    uint32_t height;
> -    SpiceRect dest;
> -    uint32_t data_size;
> -    uint8_t data[0];
> -} SpiceMsgDisplayStreamDataSized;
> -
> -typedef struct SpiceMsgDisplayStreamClip {
> -    uint32_t id;
> -    SpiceClip clip;
> -} SpiceMsgDisplayStreamClip;
> -
> -typedef struct SpiceMsgDisplayStreamDestroy {
> -    uint32_t id;
> -} SpiceMsgDisplayStreamDestroy;
> -
> -typedef struct SpiceMsgDisplayStreamActivateReport {
> -    uint32_t stream_id;
> -    uint32_t unique_id;
> -    uint32_t max_window_size;
> -    uint32_t timeout_ms;
> -} SpiceMsgDisplayStreamActivateReport;
> -
> -typedef struct SpiceMsgcDisplayStreamReport {
> -    uint32_t stream_id;
> -    uint32_t unique_id;
> -    uint32_t start_frame_mm_time;
> -    uint32_t end_frame_mm_time;
> -    uint32_t num_frames;
> -    uint32_t num_drops;
> -    int32_t last_frame_delay;
> -    uint32_t audio_delay;
> -} SpiceMsgcDisplayStreamReport;
> -
> -typedef struct SpiceMsgcDisplayGlDrawDone {
> -} SpiceMsgcDisplayGlDrawDone;
> -
> -typedef struct SpiceMsgCursorInit {
> -    SpicePoint16 position;
> -    uint16_t trail_length;
> -    uint16_t trail_frequency;
> -    uint8_t visible;
> -    SpiceCursor cursor;
> -} SpiceMsgCursorInit;
> -
> -typedef struct SpiceMsgCursorSet {
> -    SpicePoint16 position;
> -    uint8_t visible;
> -    SpiceCursor cursor;
> -} SpiceMsgCursorSet;
> -
> -typedef struct SpiceMsgCursorMove {
> -    SpicePoint16 position;
> -} SpiceMsgCursorMove;
> -
> -typedef struct SpiceMsgCursorTrail {
> -    uint16_t length;
> -    uint16_t frequency;
> -} SpiceMsgCursorTrail;
> -
> -typedef struct SpiceMsgcDisplayInit {
> -    uint8_t pixmap_cache_id;
> -    int64_t pixmap_cache_size; //in pixels
> -    uint8_t glz_dictionary_id;
> -    int32_t glz_dictionary_window_size;       // in pixels
> -} SpiceMsgcDisplayInit;
> -
> -typedef struct SpiceMsgcKeyDown {
> -    uint32_t code;
> -} SpiceMsgcKeyDown;
> -
> -typedef struct SpiceMsgcKeyUp {
> -    uint32_t code;
> -} SpiceMsgcKeyUp;
> -
> -typedef struct SpiceMsgcKeyModifiers {
> -    uint32_t modifiers;
> -} SpiceMsgcKeyModifiers;
> -
> -typedef struct SpiceMsgcMouseMotion {
> -    int32_t dx;
> -    int32_t dy;
> -    uint32_t buttons_state;
> -} SpiceMsgcMouseMotion;
> -
> -typedef struct SpiceMsgcMousePosition {
> -    uint32_t x;
> -    uint32_t y;
> -    uint32_t buttons_state;
> -    uint8_t display_id;
> -} SpiceMsgcMousePosition;
> -
> -typedef struct SpiceMsgcMousePress {
> -    int32_t button;
> -    int32_t buttons_state;
> -} SpiceMsgcMousePress;
> -
> -typedef struct SpiceMsgcMouseRelease {
> -    int32_t button;
> -    int32_t buttons_state;
> -} SpiceMsgcMouseRelease;
> -
> -typedef struct SpiceMsgAudioVolume {
> -    uint8_t nchannels;
> -    uint16_t volume[0];
> -} SpiceMsgAudioVolume;
> -
> -typedef struct SpiceMsgAudioMute {
> -    uint8_t mute;
> -} SpiceMsgAudioMute;
> -
> -typedef struct SpiceMsgPlaybackMode {
> -    uint32_t time;
> -    uint32_t mode; //SPICE_AUDIO_DATA_MODE_?
> -    uint8_t *data;
> -    uint32_t data_size;
> -} SpiceMsgPlaybackMode, SpiceMsgcRecordMode;
> -
> -typedef struct SpiceMsgPlaybackStart {
> -    uint32_t channels;
> -    uint32_t format; //SPICE_AUDIO_FMT_?
> -    uint32_t frequency;
> -    uint32_t time;
> -} SpiceMsgPlaybackStart;
> -
> -typedef struct SpiceMsgPlaybackPacket {
> -    uint32_t time;
> -    uint8_t *data;
> -    uint32_t data_size;
> -} SpiceMsgPlaybackPacket, SpiceMsgcRecordPacket;
> -
> -typedef struct SpiceMsgPlaybackLatency {
> -    uint32_t latency_ms;
> -} SpiceMsgPlaybackLatency;
> -
> -typedef struct SpiceMsgRecordStart {
> -    uint32_t channels;
> -    uint32_t format; //SPICE_AUDIO_FMT_?
> -    uint32_t frequency;
> -} SpiceMsgRecordStart;
> -
> -typedef struct SpiceMsgcRecordStartMark {
> -    uint32_t time;
> -} SpiceMsgcRecordStartMark;
> -
>  typedef struct SpiceMsgTunnelInit {
>      uint16_t max_num_of_sockets;
>      uint32_t max_socket_data_size;
> @@ -602,63 +168,14 @@ typedef struct SpiceMsgcSmartcard {
>  } SpiceMsgcSmartcard;
>  #endif
>  
> -typedef struct SpiceMsgDisplayHead {
> -    uint32_t monitor_id;
> -    uint32_t surface_id;
> -    uint32_t width;
> -    uint32_t height;
> -    uint32_t x;
> -    uint32_t y;
> -    uint32_t flags;
> -} SpiceHead;
> -
> -typedef struct SpiceMsgDisplayMonitorsConfig {
> -    uint16_t count;
> -    uint16_t max_allowed;
> -    SpiceHead heads[0];
> -} SpiceMsgDisplayMonitorsConfig;
> -
> -typedef struct SpiceMsgPortInit {
> -    uint32_t name_size;
> -    uint8_t *name;
> -    uint8_t opened;
> -} SpiceMsgPortInit;
> -
> -typedef struct SpiceMsgPortEvent {
> -    uint8_t event;
> -} SpiceMsgPortEvent;
> -
> -typedef struct SpiceMsgcPortEvent {
> -    uint8_t event;
> -} SpiceMsgcPortEvent;
> -
> -typedef struct SpiceMsgcDisplayPreferredVideoCodecType {
> -    uint8_t num_of_codecs;
> -    uint8_t codecs[0];
> -} SpiceMsgcDisplayPreferredVideoCodecType;
> -
> -typedef struct SpiceMsgcDisplayPreferredCompression {
> -    uint8_t image_compression;
> -} SpiceMsgcDisplayPreferredCompression;
> -
> -typedef struct SpiceMsgDisplayGlScanoutUnix {
> -    int drm_dma_buf_fd;
> -    uint32_t width;
> -    uint32_t height;
> -    uint32_t stride;
> -    uint32_t drm_fourcc_format;
> -    uint32_t flags;
> -} SpiceMsgDisplayGlScanoutUnix;
> -
> -typedef struct SpiceMsgDisplayGlDraw {
> -    uint32_t x;
> -    uint32_t y;
> -    uint32_t w;
> -    uint32_t h;
> -} SpiceMsgDisplayGlDraw;
> -
>  #include <common/generated_messages.h>
>  
> +typedef SpiceMsgMainAgentTokens SpiceMsgcMainAgentTokens;
> +typedef SpiceMsgMainAgentTokens SpiceMsgcMainAgentStart;
> +typedef SpiceMsgDisplayDrawCopy SpiceMsgDisplayDrawBlend;
> +typedef SpiceMsgPlaybackMode SpiceMsgcRecordMode;
> +typedef SpiceMsgPlaybackPacket SpiceMsgcRecordPacket;
> +
>  SPICE_END_DECLS
>  
>  #endif // H_SPICE_COMMON_MESSAGES
> diff --git a/spice.proto b/spice.proto
> index 02ab4df..3eb17f2 100644
> --- a/spice.proto
> +++ b/spice.proto
> @@ -106,11 +106,11 @@ flags16 mouse_mode {
>  };
>  
>  message Empty {
> -};
> +} @declare;
>  
>  message Data {
>      uint8 data[] @end @ctype(uint8_t);
> -} @nocopy;
> +} @nocopy @declare;
>  
>  enum8 data_compression_type {
>      NONE,
> @@ -138,36 +138,36 @@ struct ChannelWait {
>      uint8 channel_type;
>      uint8 channel_id;
>      uint64 message_serial;
> -} @ctype(SpiceWaitForChannel);
> +} @ctype(SpiceWaitForChannel) @declare;
>  
>  channel BaseChannel {
>   server:
>      message {
>          migrate_flags flags;
> -    } migrate;
> +    } @declare migrate;
>  
>      Data migrate_data;
>  
>      message {
>          uint32 generation;
>          uint32 window;
> -    } set_ack;
> +    } @declare set_ack;
>  
>      message {
>          uint32 id;
>          uint64 timestamp;
>          uint8 data[] @ctype(uint8_t) @as_ptr(data_len);
> -    } ping;
> +    } @declare ping;
>  
>      message {
>          uint8 wait_count;
>          ChannelWait wait_list[wait_count] @end;
> -    } wait_for_channels;
> +    } @declare wait_for_channels;
>  
>      message {
>          uint64 time_stamp;
>          link_err reason;
> -    } @ctype(SpiceMsgDisconnect) disconnecting;
> +    } @ctype(SpiceMsgDisconnect) @declare disconnecting;
>  
>      message {
>          uint64 time_stamp;
> @@ -176,7 +176,7 @@ channel BaseChannel {
>          uint32 what; /* error_code/warn_code/info_code */
>          uint32 message_len;
>          uint8 message[message_len] @end @nomarshal;
> -    } notify;
> +    } @declare notify;
>  
>      Data list; /* the msg body is SpiceSubMessageList */
>  
> @@ -185,7 +185,7 @@ channel BaseChannel {
>   client:
>      message {
>          uint32 generation;
> -    } ack_sync;
> +    } @declare ack_sync;
>  
>      Empty ack;
>  
> @@ -207,7 +207,7 @@ channel BaseChannel {
>  struct ChannelId {
>      uint8 type;
>      uint8 id;
> -};
> +} @declare;
>  
>  struct DstInfo {
>      uint16 port;
> @@ -216,13 +216,13 @@ struct DstInfo {
>      uint8 *host_data[host_size] @zero_terminated @marshall @nonnull;
>      uint32 cert_subject_size;
>      uint8 *cert_subject_data[cert_subject_size] @zero_terminated
> @marshall;
> -} @ctype(SpiceMigrationDstInfo);
> +} @ctype(SpiceMigrationDstInfo) @declare;
>  
>  channel MainChannel : BaseChannel {
>   server:
>      message {
>          DstInfo dst_info;
> -    } @ctype(SpiceMsgMainMigrationBegin) migrate_begin = 101;
> +    } @ctype(SpiceMsgMainMigrationBegin) @declare migrate_begin =
> 101;
>  
>      Empty migrate_cancel;
>  
> @@ -235,33 +235,33 @@ channel MainChannel : BaseChannel {
>          uint32 agent_tokens;
>          uint32 multi_media_time;
>          uint32 ram_hint;
> -    } init;
> +    } @declare init;
>  
>      message {
>          uint32 num_of_channels;
>          ChannelId channels[num_of_channels] @end;
> -    } @ctype(SpiceMsgChannels) channels_list;
> +    } @ctype(SpiceMsgChannels) @declare channels_list;
>  
>      message {
>          mouse_mode supported_modes;
>          mouse_mode current_mode @unique_flag;
> -    } mouse_mode;
> +    } @declare mouse_mode;
>  
>      message {
>          uint32 time;
> -    } @ctype(SpiceMsgMainMultiMediaTime) multi_media_time;
> +    } @ctype(SpiceMsgMainMultiMediaTime) @declare multi_media_time;
>  
>      Empty agent_connected;
>  
>      message {
>          link_err error_code;
> -    } @ctype(SpiceMsgMainAgentDisconnect) agent_disconnected;
> +    } @ctype(SpiceMsgMainAgentDisconnect) @declare
> agent_disconnected;
>  
>      Data agent_data;
>  
>      message {
>          uint32 num_tokens;
> -    } @ctype(SpiceMsgMainAgentTokens) agent_token;
> +    } @ctype(SpiceMsgMainAgentTokens) @declare agent_token;
>  
>      message {
>          uint16 port;
> @@ -270,27 +270,27 @@ channel MainChannel : BaseChannel {
>          uint8 *host_data[host_size] @zero_terminated @marshall;
>          uint32 cert_subject_size;
>          uint8 *cert_subject_data[cert_subject_size]
> @zero_terminated  @marshall;
> -    } @ctype(SpiceMsgMainMigrationSwitchHost) migrate_switch_host;
> +    } @ctype(SpiceMsgMainMigrationSwitchHost) @declare
> migrate_switch_host;
>  
>      Empty migrate_end;
>  
>      message {
>         uint32 name_len;
>         uint8 name[name_len] @end;
> -    } name;
> +    } @declare name;
>  
>      message {
>         uint8 uuid[16];
> -    } uuid;
> +    } @declare uuid;
>  
>      message {
>          uint32 num_tokens;
> -    } agent_connected_tokens;
> +    } @declare agent_connected_tokens;
>  
>      message {
>          DstInfo dst_info;
>          uint32 src_mig_version;
> -    } migrate_begin_seamless;
> +    } @declare migrate_begin_seamless;
>  
>      Empty migrate_dst_seamless_ack;
>      Empty migrate_dst_seamless_nack;
> @@ -298,7 +298,7 @@ channel MainChannel : BaseChannel {
>   client:
>      message {
>          uint64 cache_size;
> -    } @ctype(SpiceMsgcClientInfo) client_info = 101;
> +    } @ctype(SpiceMsgcClientInfo) @declare client_info = 101;
>  
>      Empty migrate_connected;
>  
> @@ -308,23 +308,23 @@ channel MainChannel : BaseChannel {
>  
>      message {
>          mouse_mode mode;
> -    } mouse_mode_request;
> +    } @declare mouse_mode_request;
>  
>      message {
>          uint32 num_tokens;
> -    } agent_start;
> +    } @ctype(SpiceMsgMainAgentTokens) @declare agent_start;
>  
>      Data agent_data;
>  
>      message {
>          uint32 num_tokens;
> -    } @ctype(SpiceMsgcMainAgentTokens) agent_token;
> +    } @ctype(SpiceMsgMainAgentTokens) @declare agent_token;
>  
>      Empty migrate_end;
>  
>      message {
>          uint32 src_version;
> -    } migrate_dst_do_seamless;
> +    } @declare migrate_dst_do_seamless;
>  
>      Empty migrate_connected_seamless;
>  };
> @@ -519,18 +519,18 @@ struct DisplayBase {
>      uint32 surface_id;
>      Rect box;
>      Clip clip;
> -} @ctype(SpiceMsgDisplayBase);
> +} @ctype(SpiceMsgDisplayBase) @declare;
>  
>  struct ResourceID {
>      uint8 type;  /* resource_type */
>      uint64 id;
> -};
> +} @declare;
>  
>  struct WaitForChannel {
>      uint8 channel_type;
>      uint8 channel_id;
>      uint64 message_serial;
> -};
> +} @declare;
>  
>  struct Palette {
>      uint64 unique;
> @@ -693,7 +693,7 @@ struct String {
>  struct StreamDataHeader {
>      stream_id_t id;
>      uint32 multi_media_time;
> -};
> +} @declare;
>  
>  struct Head {
>      uint32 monitor_id;
> @@ -703,7 +703,7 @@ struct Head {
>      uint32 x;
>      uint32 y;
>      uint32 flags;
> -};
> +} @declare;
>  
>  flags32 gl_scanout_flags {
>      Y0TOP
> @@ -715,19 +715,19 @@ channel DisplayChannel : BaseChannel {
>          uint32 x_res;
>          uint32 y_res;
>          uint32 bits;
> -    } mode = 101;
> +    } @declare mode = 101;
>  
>      Empty mark;
>      Empty reset;
>      message {
>          DisplayBase base;
>          Point src_pos;
> -    } copy_bits;
> +    } @declare copy_bits;
>  
>      message {
>          uint16 count;
>          ResourceID resources[count] @end;
> -    } @ctype(SpiceResourceList) inval_list;
> +    } @ctype(SpiceResourceList) @declare inval_list;
>  
>      /* This message is used to invalidate the complete image cache
>       * on the client.
> @@ -739,11 +739,11 @@ channel DisplayChannel : BaseChannel {
>      message {
>          uint8 wait_count;
>          WaitForChannel wait_list[wait_count] @end;
> -    } @ctype(SpiceMsgWaitForChannels) inval_all_pixmaps;
> +    } @ctype(SpiceMsgWaitForChannels) @declare inval_all_pixmaps;
>  
>      message {
>          uint64 id;
> -    } @ctype(SpiceMsgDisplayInvalOne) inval_palette;
> +    } @ctype(SpiceMsgDisplayInvalOne) @declare inval_palette;
>  
>      Empty inval_all_palettes;
>  
> @@ -759,22 +759,22 @@ channel DisplayChannel : BaseChannel {
>          uint32 src_height;
>          Rect dest;
>          Clip clip;
> -    } stream_create = 122;
> +    } @declare stream_create = 122;
>  
>      message {
>          StreamDataHeader base;
>          uint32 data_size;
>          uint8 data[data_size] @end @nomarshal;
> -    } stream_data;
> +    } @declare stream_data;
>  
>      message {
>          stream_id_t id;
>          Clip clip;
> -    } stream_clip;
> +    } @declare stream_clip;
>  
>      message {
>          stream_id_t id;
> -    } stream_destroy;
> +    } @declare stream_destroy;
>  
>      Empty stream_destroy_all;
>  
> @@ -785,7 +785,7 @@ channel DisplayChannel : BaseChannel {
>              ropd rop_descriptor;
>              QMask mask @outvar(mask);
>          } data;
> -    } draw_fill = 302;
> +    } @declare draw_fill = 302;
>  
>      message {
>          DisplayBase base;
> @@ -797,7 +797,7 @@ channel DisplayChannel : BaseChannel {
>              image_scale_mode scale_mode;
>              QMask mask @outvar(mask);
>          } data;
> -    } draw_opaque;
> +    } @declare draw_opaque;
>  
>      message {
>          DisplayBase base;
> @@ -808,7 +808,7 @@ channel DisplayChannel : BaseChannel {
>              image_scale_mode scale_mode;
>              QMask mask @outvar(mask);
>          } data;
> -    } draw_copy;
> +    } @declare draw_copy;
>  
>      message {
>          DisplayBase base;
> @@ -819,28 +819,28 @@ channel DisplayChannel : BaseChannel {
>              image_scale_mode scale_mode;
>              QMask mask @outvar(mask);
>          } @ctype(SpiceCopy) data;
> -    } draw_blend;
> +    } @ctype(SpiceMsgDisplayDrawCopy) draw_blend;
>  
>      message {
>          DisplayBase base;
>          struct Blackness {
>              QMask mask @outvar(mask);
>          } data;
> -    } draw_blackness;
> +    } @declare draw_blackness;
>  
>      message {
>          DisplayBase base;
>          struct Whiteness {
>              QMask mask @outvar(mask);
>          } data;
> -    } draw_whiteness;
> +    } @declare draw_whiteness;
>  
>      message {
>          DisplayBase base;
>          struct Invers {
>              QMask mask @outvar(mask);
>          } data;
> -    } draw_invers;
> +    } @declare draw_invers;
>  
>      message {
>          DisplayBase base;
> @@ -852,7 +852,7 @@ channel DisplayChannel : BaseChannel {
>              image_scale_mode scale_mode;
>              QMask mask @outvar(mask);
>          } data;
> -    } draw_rop3;
> +    } @declare draw_rop3;
>  
>      message {
>          DisplayBase base;
> @@ -863,7 +863,7 @@ channel DisplayChannel : BaseChannel {
>              uint16 fore_mode;
>              uint16 back_mode;
>          } data;
> -    } draw_stroke;
> +    } @declare draw_stroke;
>  
>      message {
>          DisplayBase base;
> @@ -875,7 +875,7 @@ channel DisplayChannel : BaseChannel {
>              uint16 fore_mode;
>              uint16 back_mode;
>          } data;
> -    } draw_text;
> +    } @declare draw_text;
>  
>      message {
>          DisplayBase base;
> @@ -885,7 +885,7 @@ channel DisplayChannel : BaseChannel {
>              uint32 src_color;
>              uint32 true_color;
>          } data;
> -    } draw_transparent;
> +    } @declare draw_transparent;
>  
>      message {
>          DisplayBase base;
> @@ -895,7 +895,7 @@ channel DisplayChannel : BaseChannel {
>              Image *src_bitmap;
>              Rect src_area;
>          } data;
> -    } draw_alpha_blend;
> +    } @declare draw_alpha_blend;
>  
>      message {
>          uint32 surface_id;
> @@ -903,11 +903,11 @@ channel DisplayChannel : BaseChannel {
>          uint32 height;
>          surface_fmt format;
>          surface_flags flags;
> -    } @ctype(SpiceMsgSurfaceCreate) surface_create;
> +    } @ctype(SpiceMsgSurfaceCreate) @declare surface_create;
>  
>      message {
>          uint32 surface_id;
> -    } @ctype(SpiceMsgSurfaceDestroy) surface_destroy;
> +    } @ctype(SpiceMsgSurfaceDestroy) @declare surface_destroy;
>  
>      message {
>          StreamDataHeader base;
> @@ -916,13 +916,13 @@ channel DisplayChannel : BaseChannel {
>          Rect dest;
>          uint32 data_size;
>          uint8 data[data_size] @end @nomarshal;
> -    } stream_data_sized;
> +    } @declare stream_data_sized;
>  
>      message {
>          uint16 count;
>          uint16 max_allowed;
>          Head heads[count] @end;
> -    } monitors_config;
> +    } @declare monitors_config;
>  
>      message {
>          DisplayBase base;
> @@ -944,14 +944,14 @@ channel DisplayChannel : BaseChannel {
>              Point16 src_origin;
>              Point16 mask_origin;
>          } data;
> -    } draw_composite;
> +    } @declare draw_composite;
>  
>      message {
>          stream_id_t stream_id;
>          uint32 unique_id;
>          uint32 max_window_size;
>          uint32 timeout_ms;
> -    } stream_activate_report;
> +    } @declare stream_activate_report;
>  
>      message {
>          unix_fd drm_dma_buf_fd;
> @@ -961,14 +961,14 @@ channel DisplayChannel : BaseChannel {
>          /* specifies the format of drm_dma_buf_fd defined in
> drm_fourcc.h */
>          uint32 drm_fourcc_format;
>          gl_scanout_flags flags;
> -    } gl_scanout_unix;
> +    } @declare gl_scanout_unix;
>  
>      message {
>          uint32 x;
>          uint32 y;
>          uint32 w;
>          uint32 h;
> -    } gl_draw;
> +    } @declare gl_draw;
>  
>   client:
>      message {
> @@ -976,7 +976,7 @@ channel DisplayChannel : BaseChannel {
>          int64 pixmap_cache_size; //in pixels
>          uint8 glz_dictionary_id;
>          int32 glz_dictionary_window_size;  // in pixels
> -    } init = 101;
> +    } @declare init = 101;
>  
>      message {
>          stream_id_t stream_id;
> @@ -1000,19 +1000,19 @@ channel DisplayChannel : BaseChannel {
>          // the latency of the audio playback
>          // If there is no audio playback, set it to 0xffffffffu
>          uint32 audio_delay;
> -    } stream_report;
> +    } @declare stream_report;
>  
>      message {
>          image_compression image_compression;
> -    } preferred_compression;
> +    } @declare preferred_compression;
>  
>      message {
> -    } gl_draw_done;
> +    } @declare gl_draw_done;
>  
>      message {
>          uint8 num_of_codecs;
>          video_codec_type codecs[num_of_codecs] @end;
> -    } preferred_video_codec_type;
> +    } @declare preferred_video_codec_type;
>  };
>  
>  flags16 keyboard_modifier_flags {
> @@ -1040,15 +1040,15 @@ channel InputsChannel : BaseChannel {
>   client:
>      message {
>          uint32 code;
> -    } @ctype(SpiceMsgcKeyDown) key_down = 101;
> +    } @ctype(SpiceMsgcKeyDown) @declare key_down = 101;
>  
>      message {
>          uint32 code;
> -    } @ctype(SpiceMsgcKeyUp) key_up;
> +    } @ctype(SpiceMsgcKeyUp) @declare key_up;
>  
>      message {
>          keyboard_modifier_flags modifiers;
> -    } @ctype(SpiceMsgcKeyModifiers) key_modifiers;
> +    } @ctype(SpiceMsgcKeyModifiers) @declare key_modifiers;
>  
>      Data key_scancode;
>  
> @@ -1056,33 +1056,33 @@ channel InputsChannel : BaseChannel {
>          int32 dx;
>          int32 dy;
>          mouse_button_mask buttons_state;
> -    } @ctype(SpiceMsgcMouseMotion) mouse_motion = 111;
> +    } @ctype(SpiceMsgcMouseMotion) @declare mouse_motion = 111;
>  
>      message {
>          uint32 x;
>          uint32 y;
>          mouse_button_mask buttons_state;
>          uint8 display_id;
> -    } @ctype(SpiceMsgcMousePosition) mouse_position;
> +    } @ctype(SpiceMsgcMousePosition) @declare mouse_position;
>  
>      message {
>          mouse_button button;
>          mouse_button_mask buttons_state;
> -    } @ctype(SpiceMsgcMousePress) mouse_press;
> +    } @ctype(SpiceMsgcMousePress) @declare mouse_press;
>  
>      message {
>          mouse_button button;
>          mouse_button_mask buttons_state;
> -    } @ctype(SpiceMsgcMouseRelease) mouse_release;
> +    } @ctype(SpiceMsgcMouseRelease) @declare mouse_release;
>  
>   server:
>      message {
>          keyboard_modifier_flags keyboard_modifiers;
> -    } init = 101;
> +    } @declare init = 101;
>  
>      message {
>          keyboard_modifier_flags modifiers;
> -    } key_modifiers;
> +    } @declare key_modifiers;
>  
>      Empty mouse_motion_ack = 111;
>  };
> @@ -1119,7 +1119,7 @@ struct Cursor {
>          CursorHeader header;
>      } u @anon;
>      uint8 data[] @as_ptr(data_size);
> -};
> +} @declare;
>  
>  channel CursorChannel : BaseChannel {
>   server:
> @@ -1129,7 +1129,7 @@ channel CursorChannel : BaseChannel {
>          uint16 trail_frequency;
>          uint8 visible;
>          Cursor cursor;
> -    } init = 101;
> +    } @declare init = 101;
>  
>      Empty reset;
>  
> @@ -1137,22 +1137,22 @@ channel CursorChannel : BaseChannel {
>          Point16 position;
>          uint8 visible;
>          Cursor cursor;
> -    } set;
> +    } @declare set;
>  
>      message {
>          Point16 position;
> -    } move;
> +    } @declare move;
>  
>      Empty hide;
>  
>      message {
>          uint16 length;
>          uint16 frequency;
> -    } trail;
> +    } @declare trail;
>  
>      message {
>          uint64 id;
> -    } @ctype(SpiceMsgDisplayInvalOne) inval_one;
> +    } @ctype(SpiceMsgDisplayInvalOne) @declare inval_one;
>  
>      Empty inval_all;
>  };
> @@ -1172,31 +1172,31 @@ enum16 audio_fmt {
>  message AudioVolume {
>      uint8 nchannels;
>      uint16 volume[nchannels] @end;
> -};
> +} @declare;
>  
>  message AudioMute {
>      uint8 mute;
> -};
> +} @declare;
>  
>  channel PlaybackChannel : BaseChannel {
>   server:
>      message {
>          uint32 time;
>          uint8 data[] @as_ptr(data_size);
> -    } @ctype(SpiceMsgPlaybackPacket) data = 101;
> +    } @ctype(SpiceMsgPlaybackPacket) @declare data = 101;
>  
>      message {
>          uint32 time;
>          audio_data_mode mode;
>          uint8 data[] @as_ptr(data_size);
> -    } mode;
> +    } @declare mode;
>  
>      message {
>         uint32 channels;
>         audio_fmt format;
>         uint32 frequency;
>         uint32 time;
> -    } start;
> +    } @declare start;
>  
>      Empty stop;
>      AudioVolume volume;
> @@ -1204,7 +1204,7 @@ channel PlaybackChannel : BaseChannel {
>  
>      message {
>          uint32 latency_ms;
> -    } latency;
> +    } @declare latency;
>  };
>  
>  channel RecordChannel : BaseChannel {
> @@ -1213,7 +1213,7 @@ channel RecordChannel : BaseChannel {
>          uint32 channels;
>          audio_fmt format;
>          uint32 frequency;
> -    } start = 101;
> +    } @declare start = 101;
>  
>      Empty stop;
>      AudioVolume volume;
> @@ -1222,17 +1222,17 @@ channel RecordChannel : BaseChannel {
>      message {
>          uint32 time;
>          uint8 data[] @nomarshal @as_ptr(data_size);
> -    } @ctype(SpiceMsgcRecordPacket) data = 101;
> +    } @ctype(SpiceMsgcPlaybackPacket) @declare data = 101;
>  
>      message {
>          uint32 time;
>          audio_data_mode mode;
>          uint8 data[] @as_ptr(data_size);
> -    } mode;
> +    } @ctype(SpiceMsgPlaybackMode) @declare mode;
>  
>      message {
>          uint32 time;
> -    } start_mark;
> +    } @declare start_mark;
>  };
>  
>  enum16 tunnel_service_type {
> @@ -1444,16 +1444,16 @@ channel PortChannel : SpicevmcChannel {
>   client:
>      message {
>          uint8 event;
> -    } event = 201;
> +    } @declare event = 201;
>   server:
>      message {
>          uint32 name_size;
>          uint8 *name[name_size] @zero_terminated @marshall @nonnull;
>          uint8 opened;
> -    } init = 201;
> +    } @declare init = 201;
>      message {
>          uint8 event;
> -    } event;
> +    } @declare event;
>  };
>  
>  channel WebDAVChannel : PortChannel {
--- old-message.h	2019-02-22 15:12:10.600877729 -0600
+++ new-message.h	2019-02-22 15:15:59.004847386 -0600
@@ -1,5 +1,4 @@
 typedef struct SpiceMsgData {
-    uint32_t data_size;
     uint8_t data[0];
 } SpiceMsgData;
 
@@ -11,15 +10,15 @@
 } SpiceMsgCompressedData;
 
 typedef struct SpiceMsgEmpty {
-    uint8_t padding;
+    char dummy[0];
 } SpiceMsgEmpty;
 
 typedef struct SpiceMsgInputsInit {
-    uint32_t keyboard_modifiers;
+    uint16_t keyboard_modifiers;
 } SpiceMsgInputsInit;
 
 typedef struct SpiceMsgInputsKeyModifiers {
-    uint32_t modifiers;
+    uint16_t modifiers;
 } SpiceMsgInputsKeyModifiers;
 
 typedef struct SpiceMsgMainMultiMediaTime {
@@ -31,9 +30,6 @@
     uint16_t sport;
     uint32_t host_size;
     uint8_t *host_data;
-    uint16_t pub_key_type;
-    uint32_t pub_key_size;
-    uint8_t *pub_key_data;
     uint32_t cert_subject_size;
     uint8_t *cert_subject_data;
 } SpiceMigrationDstInfo;
@@ -60,7 +56,6 @@
     uint8_t *cert_subject_data;
 } SpiceMsgMainMigrationSwitchHost;
 
-
 typedef struct SpiceMsgMigrate {
     uint32_t flags;
 } SpiceMsgMigrate;
@@ -81,7 +76,7 @@
 } SpiceMsgSetAck;
 
 typedef struct SpiceMsgcAckSync {
-  uint32_t generation;
+    uint32_t generation;
 } SpiceMsgcAckSync;
 
 typedef struct SpiceWaitForChannel {
@@ -113,7 +108,7 @@
 
 typedef struct SpiceMsgDisconnect {
     uint64_t time_stamp;
-    uint32_t reason; // SPICE_ERR_?
+    uint32_t reason;
 } SpiceMsgDisconnect;
 
 typedef struct SpiceMsgNotify {
@@ -140,39 +135,41 @@
 } SpiceMsgMainUuid;
 
 typedef struct SpiceMsgMainMouseMode {
-    uint32_t supported_modes;
-    uint32_t current_mode;
+    uint16_t supported_modes;
+    uint16_t current_mode;
 } SpiceMsgMainMouseMode;
 
 typedef struct SpiceMsgPing {
     uint32_t id;
     uint64_t timestamp;
-    void *data;
     uint32_t data_len;
+    uint8_t *data;
 } SpiceMsgPing;
 
 typedef struct SpiceMsgMainAgentDisconnect {
-    uint32_t error_code; // SPICE_ERR_?
+    uint32_t error_code;
 } SpiceMsgMainAgentDisconnect;
 
-#define SPICE_AGENT_MAX_DATA_SIZE 2048
-
 typedef struct SpiceMsgMainAgentTokens {
     uint32_t num_tokens;
-} SpiceMsgMainAgentTokens, SpiceMsgcMainAgentTokens, SpiceMsgcMainAgentStart;
+} SpiceMsgMainAgentTokens;
+typedef SpiceMsgMainAgentTokens SpiceMsgcMainAgentTokens;
+typedef SpiceMsgMainAgentTokens SpiceMsgcMainAgentStart;
 
-typedef struct SpiceMsgMainAgentTokens SpiceMsgMainAgentConnectedTokens;
+typedef struct SpiceMsgMainAgentConnectedTokens {
+    uint32_t num_tokens;
+} SpiceMsgMainAgentConnectedTokens;
 
 typedef struct SpiceMsgcClientInfo {
     uint64_t cache_size;
 } SpiceMsgcClientInfo;
 
 typedef struct SpiceMsgcMainMouseModeRequest {
-    uint32_t mode;
+    uint16_t mode;
 } SpiceMsgcMainMouseModeRequest;
 
 typedef struct SpiceCursor {
-    uint32_t flags;
+    uint16_t flags;
     SpiceCursorHeader header;
     uint32_t data_size;
     uint8_t *data;
@@ -275,9 +272,9 @@
 
 typedef struct SpiceMsgDisplayStreamCreate {
     uint32_t surface_id;
-    uint32_t id; /* Any number from 0 to SPICE_MAX_NUM_STREAMS - 1 */
-    uint32_t flags;
-    uint32_t codec_type;
+    uint32_t id;
+    uint8_t flags;
+    uint8_t codec_type;
     uint64_t stamp;
     uint32_t stream_width;
     uint32_t stream_height;
@@ -335,6 +332,7 @@
 } SpiceMsgcDisplayStreamReport;
 
 typedef struct SpiceMsgcDisplayGlDrawDone {
+    char dummy[0];
 } SpiceMsgcDisplayGlDrawDone;
 
 typedef struct SpiceMsgCursorInit {
@@ -362,9 +360,9 @@
 
 typedef struct SpiceMsgcDisplayInit {
     uint8_t pixmap_cache_id;
-    int64_t pixmap_cache_size; //in pixels
+    int64_t pixmap_cache_size;
     uint8_t glz_dictionary_id;
-    int32_t glz_dictionary_window_size;       // in pixels
+    int32_t glz_dictionary_window_size;
 } SpiceMsgcDisplayInit;
 
 typedef struct SpiceMsgcKeyDown {
@@ -376,30 +374,30 @@
 } SpiceMsgcKeyUp;
 
 typedef struct SpiceMsgcKeyModifiers {
-    uint32_t modifiers;
+    uint16_t modifiers;
 } SpiceMsgcKeyModifiers;
 
 typedef struct SpiceMsgcMouseMotion {
     int32_t dx;
     int32_t dy;
-    uint32_t buttons_state;
+    uint16_t buttons_state;
 } SpiceMsgcMouseMotion;
 
 typedef struct SpiceMsgcMousePosition {
     uint32_t x;
     uint32_t y;
-    uint32_t buttons_state;
+    uint16_t buttons_state;
     uint8_t display_id;
 } SpiceMsgcMousePosition;
 
 typedef struct SpiceMsgcMousePress {
-    int32_t button;
-    int32_t buttons_state;
+    uint8_t button;
+    uint16_t buttons_state;
 } SpiceMsgcMousePress;
 
 typedef struct SpiceMsgcMouseRelease {
-    int32_t button;
-    int32_t buttons_state;
+    uint8_t button;
+    uint16_t buttons_state;
 } SpiceMsgcMouseRelease;
 
 typedef struct SpiceMsgAudioVolume {
@@ -413,23 +411,32 @@
 
 typedef struct SpiceMsgPlaybackMode {
     uint32_t time;
-    uint32_t mode; //SPICE_AUDIO_DATA_MODE_?
-    uint8_t *data;
+    uint16_t mode;
     uint32_t data_size;
-} SpiceMsgPlaybackMode, SpiceMsgcRecordMode;
+    uint8_t *data;
+} SpiceMsgPlaybackMode;
+typedef SpiceMsgPlaybackMode SpiceMsgcRecordMode;
 
 typedef struct SpiceMsgPlaybackStart {
     uint32_t channels;
-    uint32_t format; //SPICE_AUDIO_FMT_?
+    uint16_t format;
     uint32_t frequency;
     uint32_t time;
 } SpiceMsgPlaybackStart;
 
-typedef struct SpiceMsgPlaybackPacket {
+typedef struct SpiceMsgcPlaybackPacket {
     uint32_t time;
+    uint32_t data_size;
     uint8_t *data;
+} SpiceMsgcPlaybackPacket;
+
+typedef struct SpiceMsgPlaybackPacket {
+    uint32_t time;
     uint32_t data_size;
-} SpiceMsgPlaybackPacket, SpiceMsgcRecordPacket;
+    uint8_t *data;
+} SpiceMsgPlaybackPacket;
+
+typedef SpiceMsgPlaybackPacket SpiceMsgcRecordPacket;
 
 typedef struct SpiceMsgPlaybackLatency {
     uint32_t latency_ms;
@@ -437,7 +444,7 @@
 
 typedef struct SpiceMsgRecordStart {
     uint32_t channels;
-    uint32_t format; //SPICE_AUDIO_FMT_?
+    uint16_t format;
     uint32_t frequency;
 } SpiceMsgRecordStart;
 
@@ -471,7 +478,7 @@
     uint32_t tokens;
 } SpiceMsgTunnelSocketOpen;
 
-/* connection id must be the first field in msgs directed to a specific connection */
+
 
 typedef struct SpiceMsgTunnelSocketFin {
     uint16_t connection_id;
@@ -511,7 +518,7 @@
     uint32_t id;
 } SpiceMsgcTunnelRemoveService;
 
-/* connection id must be the first field in msgs directed to a specific connection */
+
 
 typedef struct SpiceMsgcTunnelSocketOpenAck {
     uint16_t connection_id;
@@ -544,25 +551,7 @@
     uint32_t num_tokens;
 } SpiceMsgcTunnelSocketTokens;
 
-#ifdef USE_SMARTCARD
-typedef struct SpiceMsgSmartcard {
-    VSCMsgType type;
-    uint32_t length;
-    uint32_t reader_id;
-    uint8_t data[0];
-} SpiceMsgSmartcard;
-
-typedef struct SpiceMsgcSmartcard {
-    VSCMsgHeader header;
-    union {
-        VSCMsgError error;
-        VSCMsgATR atr_data;
-        VSCMsgReaderAdd add;
-    };
-} SpiceMsgcSmartcard;
-#endif
-
-typedef struct SpiceMsgDisplayHead {
+typedef struct SpiceHead {
     uint32_t monitor_id;
     uint32_t surface_id;
     uint32_t width;
@@ -616,3 +605,4 @@
     uint32_t w;
     uint32_t h;
 } SpiceMsgDisplayGlDraw;
+
_______________________________________________
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to