[Spice-devel] [PATCH spice-common v2] proto: Remove support for SPICE version 1
Frediano Ziglio
fziglio at redhat.com
Fri Sep 28 07:41:29 UTC 2018
ping
>
> SPICE version 2 was introduced more than 8 years ago.
> RHEL 6 already removed support for version 1 in the server.
>
> Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> ---
> Makefile.am | 1 -
> common/Makefile.am | 8 -
> common/client_marshallers.h | 1 -
> common/meson.build | 2 -
> meson.build | 1 -
> spice.proto | 15 +-
> spice1.proto | 943 ------------------------------------
> 7 files changed, 1 insertion(+), 970 deletions(-)
> delete mode 100644 spice1.proto
>
> Changes since v1:
> - removed some constant from spice.proto only related to SPICE v1
>
> diff --git a/Makefile.am b/Makefile.am
> index e5630a9..5402499 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -8,7 +8,6 @@ EXTRA_DIST = \
> meson_options.txt \
> spice_codegen.py \
> spice.proto \
> - spice1.proto \
> $(NULL)
>
> DISTCLEANFILES = *.pyc
> diff --git a/common/Makefile.am b/common/Makefile.am
> index 748c1f2..d8e30d1 100644
> --- a/common/Makefile.am
> +++ b/common/Makefile.am
> @@ -3,10 +3,8 @@ NULL =
> # Avoid need for python(pyparsing) by end users
> CLIENT_MARSHALLERS = \
> generated_client_demarshallers.c \
> - generated_client_demarshallers1.c \
> generated_client_marshallers.c \
> generated_client_marshallers.h \
> - generated_client_marshallers1.c \
> $(NULL)
>
> SERVER_MARSHALLERS = \
> @@ -102,18 +100,12 @@ MARSHALLERS_DEPS = \
> generated_client_demarshallers.c: $(top_srcdir)/spice.proto
> $(MARSHALLERS_DEPS)
> $(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py
> --generate-demarshallers --client --include common/messages.h $< $@
> >/dev/null
>
> -generated_client_demarshallers1.c: $(top_srcdir)/spice1.proto
> $(MARSHALLERS_DEPS)
> - $(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py
> --generate-demarshallers --client --include common/messages.h --prefix 1
> --ptrsize 8 $< $@ >/dev/null
> -
> generated_client_marshallers.h: $(top_srcdir)/spice.proto
> $(MARSHALLERS_DEPS)
> $(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py --generate-marshallers
> -P --client --include common/messages.h -H $< $@ >/dev/null
>
> generated_client_marshallers.c: $(top_srcdir)/spice.proto
> $(MARSHALLERS_DEPS)
> $(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py --generate-marshallers
> -P --include client_marshallers.h --client $< $@ >/dev/null
>
> -generated_client_marshallers1.c: $(top_srcdir)/spice1.proto
> $(MARSHALLERS_DEPS)
> - $(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py --generate-marshallers
> -P --include common/messages.h --include client_marshallers.h --client
> --prefix 1 --ptrsize 8 $< $@ >/dev/null
> -
> generated_server_demarshallers.c: $(top_srcdir)/spice.proto
> $(MARSHALLERS_DEPS)
> $(AM_V_GEN)$(PYTHON) $(top_srcdir)/spice_codegen.py
> --generate-demarshallers --server --include common/messages.h $< $@
> >/dev/null
>
> diff --git a/common/client_marshallers.h b/common/client_marshallers.h
> index 322b1d8..919e889 100644
> --- a/common/client_marshallers.h
> +++ b/common/client_marshallers.h
> @@ -32,7 +32,6 @@
> SPICE_BEGIN_DECLS
>
> SpiceMessageMarshallers *spice_message_marshallers_get(void);
> -SpiceMessageMarshallers *spice_message_marshallers_get1(void);
>
> SPICE_END_DECLS
>
> diff --git a/common/meson.build b/common/meson.build
> index 9044aa9..36ba43b 100644
> --- a/common/meson.build
> +++ b/common/meson.build
> @@ -52,9 +52,7 @@ spice_common_dep = declare_dependency(link_with :
> spice_common_lib,
> if spice_common_generate_client_code
> targets = [
> ['client_demarshallers', spice_proto,
> 'generated_client_demarshallers.c', ['--generate-demarshallers',
> '--client', '--include', 'common/messages.h', '@INPUT@', '@OUTPUT@']],
> - ['client_demarshallers1', spice1_proto,
> 'generated_client_demarshallers1.c', ['--generate-demarshallers',
> '--client', '--include', 'common/messages.h', '--prefix', '1', '--ptrsize',
> '8', '@INPUT@', '@OUTPUT@']],
> ['client_marshalers', spice_proto, 'generated_client_marshallers.c',
> ['--generate-marshallers', '-P', '--client', '--include',
> 'client_marshallers.h', '@INPUT@', '@OUTPUT@']],
> - ['client_marshallers1', spice1_proto, 'generated_client_marshallers1.c',
> ['--generate-marshallers', '-P', '--client', '--include',
> 'common/messages.h', '--include', 'client_marshallers.h', '--prefix', '1',
> '--ptrsize', '8', '@INPUT@', '@OUTPUT@']],
> ['client_marshallers_h', spice_proto, 'generated_client_marshallers.h',
> ['--generate-marshallers', '-P', '--client', '--include',
> 'common/messages.h', '-H', '@INPUT@', '@OUTPUT@']],
> ]
>
> diff --git a/meson.build b/meson.build
> index 6fa67dc..f5251c0 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -25,7 +25,6 @@ spice_common_deps = []
> spice_common_include = include_directories('.')
>
> spice_proto = files('spice.proto')
> -spice1_proto = files('spice1.proto')
> spice_codegen = files('spice_codegen.py')
> spice_codegen_files = [spice_codegen]
>
> diff --git a/spice.proto b/spice.proto
> index 07f11ec..02ab4df 100644
> --- a/spice.proto
> +++ b/spice.proto
> @@ -105,19 +105,6 @@ flags16 mouse_mode {
> CLIENT,
> };
>
> -enum16 pubkey_type {
> - INVALID,
> - RSA,
> - RSA2,
> - DSA,
> - DSA1,
> - DSA2,
> - DSA3,
> - DSA4,
> - DH,
> - EC,
> -};
> -
> message Empty {
> };
>
> @@ -535,7 +522,7 @@ struct DisplayBase {
> } @ctype(SpiceMsgDisplayBase);
>
> struct ResourceID {
> - uint8 type;
> + uint8 type; /* resource_type */
> uint64 id;
> };
>
> diff --git a/spice1.proto b/spice1.proto
> deleted file mode 100644
> index 48b0150..0000000
> --- a/spice1.proto
> +++ /dev/null
> @@ -1,943 +0,0 @@
> -/* built in types:
> - int8, uint8, 16, 32, 64
> -*/
> -
> -typedef fixed28_4 int32 @ctype(SPICE_FIXED28_4);
> -
> -struct Point {
> - int32 x;
> - int32 y;
> -};
> -
> -struct Point16 {
> - int16 x;
> - int16 y;
> -};
> -
> -struct PointFix {
> - fixed28_4 x;
> - fixed28_4 y;
> -};
> -
> -struct Rect {
> - int32 top;
> - int32 left;
> - int32 bottom;
> - int32 right;
> -};
> -
> -enum32 link_err {
> - OK,
> - ERROR,
> - INVALID_MAGIC,
> - INVALID_DATA,
> - VERSION_MISMATCH,
> - NEED_SECURED,
> - NEED_UNSECURED,
> - PERMISSION_DENIED,
> - BAD_CONNECTION_ID,
> - CHANNEL_NOT_AVAILABLE
> -};
> -
> -enum32 warn_code {
> - WARN_GENERAL
> -} @prefix(SPICE_);
> -
> -enum32 info_code {
> - INFO_GENERAL
> -} @prefix(SPICE_);
> -
> -flags32 migrate_flags {
> - NEED_FLUSH,
> - NEED_DATA_TRANSFER
> -} @prefix(SPICE_MIGRATE_);
> -
> -enum32 notify_severity {
> - INFO,
> - WARN,
> - ERROR,
> -};
> -
> -enum32 notify_visibility {
> - LOW,
> - MEDIUM,
> - HIGH,
> -};
> -
> -flags32 mouse_mode {
> - SERVER,
> - CLIENT,
> -};
> -
> -enum16 pubkey_type {
> - INVALID,
> - RSA,
> - RSA2,
> - DSA,
> - DSA1,
> - DSA2,
> - DSA3,
> - DSA4,
> - DH,
> - EC,
> -};
> -
> -message Empty {
> -};
> -
> -message Data {
> - uint8 data[] @end @ctype(uint8_t);
> -} @nocopy;
> -
> -struct ChannelWait {
> - uint8 channel_type;
> - uint8 channel_id;
> - uint64 message_serial;
> -} @ctype(SpiceWaitForChannel);
> -
> -channel BaseChannel {
> - server:
> - message {
> - migrate_flags flags;
> - } migrate;
> -
> - Data migrate_data;
> -
> - message {
> - uint32 generation;
> - uint32 window;
> - } set_ack;
> -
> - message {
> - uint32 id;
> - uint64 timestamp;
> - uint8 data[] @ctype(uint8_t) @as_ptr(data_len);
> - } ping;
> -
> - message {
> - uint8 wait_count;
> - ChannelWait wait_list[wait_count] @end;
> - } wait_for_channels;
> -
> - message {
> - uint64 time_stamp;
> - link_err reason;
> - } @ctype(SpiceMsgDisconnect) disconnecting;
> -
> - message {
> - uint64 time_stamp;
> - notify_severity severity;
> - notify_visibility visibilty;
> - uint32 what; /* error_code/warn_code/info_code */
> - uint32 message_len;
> - uint8 message[message_len] @end @nomarshal;
> - uint8 zero @end @ctype(uint8_t) @nomarshal;
> - } notify;
> -
> - client:
> - message {
> - uint32 generation;
> - } ack_sync;
> -
> - Empty ack;
> -
> - message {
> - uint32 id;
> - uint64 timestamp;
> - } @ctype(SpiceMsgPing) pong;
> -
> - Empty migrate_flush_mark;
> -
> - Data migrate_data;
> -
> - message {
> - uint64 time_stamp;
> - link_err reason;
> - } @ctype(SpiceMsgDisconnect) disconnecting;
> -};
> -
> -struct ChannelId {
> - uint8 type;
> - uint8 id;
> -};
> -
> -struct DstInfo {
> - uint16 port;
> - uint16 sport;
> - uint32 host_offset @zero;
> - uint32 host_size;
> - pubkey_type pub_key_type @minor(1);
> - uint32 pub_key_offset @minor(1) @zero;
> - uint32 pub_key_size @minor(1);
> - uint8 host_data[host_size] @as_ptr @zero_terminated;
> - uint8 pub_key_data[pub_key_size] @minor(1) @as_ptr @zero_terminated;
> -} @ctype(SpiceMigrationDstInfo);
> -
> -channel MainChannel : BaseChannel {
> - server:
> - message {
> - DstInfo dst_info;
> - } @ctype(SpiceMsgMainMigrationBegin) migrate_begin = 101;
> -
> - Empty migrate_cancel;
> -
> - message {
> - uint32 session_id;
> - uint32 display_channels_hint;
> - uint32 supported_mouse_modes;
> - uint32 current_mouse_mode;
> - uint32 agent_connected;
> - uint32 agent_tokens;
> - uint32 multi_media_time;
> - uint32 ram_hint;
> - } init;
> -
> - message {
> - uint32 num_of_channels;
> - ChannelId channels[num_of_channels] @end;
> - } @ctype(SpiceMsgChannels) channels_list;
> -
> - message {
> - mouse_mode supported_modes;
> - mouse_mode current_mode @unique_flag;
> - } mouse_mode;
> -
> - message {
> - uint32 time;
> - } @ctype(SpiceMsgMainMultiMediaTime) multi_media_time;
> -
> - Empty agent_connected;
> -
> - message {
> - link_err error_code;
> - } @ctype(SpiceMsgMainAgentDisconnect) agent_disconnected;
> -
> - Data agent_data;
> -
> - message {
> - uint32 num_tokens;
> - } @ctype(SpiceMsgMainAgentTokens) agent_token;
> -
> - message {
> - uint16 port;
> - uint16 sport;
> - uint32 host_offset @zero;
> - uint32 host_size;
> - uint32 cert_subject_offset @zero;
> - uint32 cert_subject_size;
> - uint8 host_data[host_size] @as_ptr @zero_terminated;
> - uint8 cert_subject_data[cert_subject_size] @as_ptr @zero_terminated;
> - } @ctype(SpiceMsgMainMigrationSwitchHost) migrate_switch_host;
> -
> - client:
> - message {
> - uint64 cache_size;
> - } @ctype(SpiceMsgcClientInfo) client_info = 101;
> -
> - Empty migrate_connected;
> -
> - Empty migrate_connect_error;
> -
> - Empty attach_channels;
> -
> - message {
> - mouse_mode mode;
> - } mouse_mode_request;
> -
> - message {
> - uint32 num_tokens;
> - } agent_start;
> -
> - Data agent_data;
> -
> - message {
> - uint32 num_tokens;
> - } @ctype(SpiceMsgcMainAgentTokens) agent_token;
> -};
> -
> -enum32 clip_type {
> - NONE,
> - RECTS
> -};
> -
> -flags32 path_flags { /* TODO: C enum names changes */
> - BEGIN = 0,
> - END = 1,
> - CLOSE = 3,
> - BEZIER = 4,
> -} @prefix(SPICE_PATH_);
> -
> -enum32 video_codec_type {
> - MJPEG = 1,
> -};
> -
> -flags32 stream_flags {
> - TOP_DOWN = 0,
> -};
> -
> -enum32 brush_type {
> - NONE,
> - SOLID,
> - PATTERN,
> -};
> -
> -flags8 mask_flags {
> - INVERS,
> -};
> -
> -enum8 image_type {
> - BITMAP,
> - QUIC,
> - RESERVED,
> - LZ_PLT = 100,
> - LZ_RGB,
> - GLZ_RGB,
> - FROM_CACHE,
> -};
> -
> -flags8 image_flags {
> - CACHE_ME,
> -};
> -
> -enum8 bitmap_fmt {
> - INVALID,
> - 1BIT_LE,
> - 1BIT_BE,
> - 4BIT_LE,
> - 4BIT_BE,
> - 8BIT /* 8bit indexed mode */,
> - 16BIT, /* 0555 mode */
> - 24BIT /* 3 byte, brg */,
> - 32BIT /* 4 byte, xrgb in little endian format */,
> - RGBA /* 4 byte, argb in little endian format */
> -};
> -
> -flags8 bitmap_flags {
> - PAL_CACHE_ME,
> - PAL_FROM_CACHE,
> - TOP_DOWN,
> -};
> -
> -enum8 image_scale_mode {
> - INTERPOLATE,
> - NEAREST,
> -};
> -
> -flags16 ropd {
> - INVERS_SRC,
> - INVERS_BRUSH,
> - INVERS_DEST,
> - OP_PUT,
> - OP_OR,
> - OP_AND,
> - OP_XOR,
> - OP_BLACKNESS,
> - OP_WHITENESS,
> - OP_INVERS,
> - INVERS_RES,
> -};
> -
> -flags8 line_flags {
> - STYLED = 3,
> - START_WITH_GAP = 2,
> -};
> -
> -enum8 line_cap {
> - ROUND,
> - SQUARE,
> - BUTT,
> -};
> -
> -enum8 line_join {
> - ROUND,
> - BEVEL,
> - MITER,
> -};
> -
> -flags16 string_flags {
> - RASTER_A1,
> - RASTER_A4,
> - RASTER_A8,
> - RASTER_TOP_DOWN,
> -};
> -
> -enum8 resource_type {
> - INVALID,
> - PIXMAP
> -} @prefix(SPICE_RES_TYPE_);
> -
> -struct ClipRects {
> - uint32 num_rects;
> - Rect rects[num_rects] @end;
> -};
> -
> -struct PathSegment {
> - path_flags flags;
> - uint32 count;
> - PointFix points[count] @end;
> -} @ctype(SpicePathSeg);
> -
> -struct Path {
> - uint32 segments_size @bytes_count(num_segments);
> - PathSegment segments[bytes(segments_size, num_segments)] @ptr_array;
> -};
> -
> -struct Clip {
> - clip_type type;
> - switch (type) {
> - case RECTS:
> - ClipRects *rects @outvar(cliprects);
> - default:
> - uint64 data @zero;
> - } u @anon;
> -};
> -
> -struct DisplayBase {
> - uint32 surface_id @virtual(0);
> - Rect box;
> - Clip clip;
> -} @ctype(SpiceMsgDisplayBase);
> -
> -struct ResourceID {
> - uint8 type;
> - uint64 id;
> -};
> -
> -struct WaitForChannel {
> - uint8 channel_type;
> - uint8 channel_id;
> - uint64 message_serial;
> -};
> -
> -struct Palette {
> - uint64 unique;
> - uint16 num_ents;
> - uint32 ents[num_ents] @end;
> -};
> -
> -struct BitmapData {
> - bitmap_fmt format;
> - bitmap_flags flags;
> - uint32 x;
> - uint32 y;
> - uint32 stride;
> - switch (flags) {
> - case PAL_FROM_CACHE:
> - uint64 palette_id;
> - default:
> - Palette *palette @outvar(bitmap);
> - } pal @anon;
> - uint8 *data[image_size(8, stride, y)] @chunk; /* pointer to array, not
> array of pointers as in C */
> -} @ctype(SpiceBitmap);
> -
> -struct BinaryData {
> - uint32 data_size;
> - uint8 data[data_size] @nomarshal @chunk;
> -} @ctype(SpiceQUICData);
> -
> -struct LZPLTData {
> - bitmap_flags flags;
> - uint32 data_size;
> - switch (flags) {
> - case PAL_FROM_CACHE:
> - uint64 palette_id;
> - default:
> - Palette *palette @nonnull @outvar(lzplt);
> - } pal @anon;
> - uint8 data[data_size] @nomarshal @chunk;
> -};
> -
> -struct Image {
> - struct ImageDescriptor {
> - uint64 id;
> - image_type type;
> - image_flags flags;
> - uint32 width;
> - uint32 height;
> - } descriptor;
> -
> - switch (descriptor.type) {
> - case BITMAP:
> - BitmapData bitmap;
> - case QUIC:
> - BinaryData quic;
> - case LZ_RGB:
> - case GLZ_RGB:
> - BinaryData lz_rgb;
> - case LZ_PLT:
> - LZPLTData lz_plt;
> - } u;
> -};
> -
> -struct Pattern {
> - Image *pat @nonnull;
> - Point pos;
> -};
> -
> -struct Brush {
> - brush_type type;
> - switch (type) {
> - case SOLID:
> - uint32 color;
> - case PATTERN:
> - Pattern pattern;
> - } u @fixedsize;
> -};
> -
> -struct QMask {
> - mask_flags flags;
> - Point pos;
> - Image *bitmap;
> -};
> -
> -struct LineAttr {
> - line_flags flags;
> - line_join join_style @zero;
> - line_cap end_style @zero;
> - uint8 style_nseg;
> - fixed28_4 width @zero;
> - fixed28_4 miter_limit @zero;
> - fixed28_4 *style[style_nseg];
> -};
> -
> -struct RasterGlyphA1 {
> - Point render_pos;
> - Point glyph_origin;
> - uint16 width;
> - uint16 height;
> - uint8 data[image_size(1, width, height)] @end;
> -} @ctype(SpiceRasterGlyph);
> -
> -struct RasterGlyphA4 {
> - Point render_pos;
> - Point glyph_origin;
> - uint16 width;
> - uint16 height;
> - uint8 data[image_size(4, width, height)] @end;
> -} @ctype(SpiceRasterGlyph);
> -
> -struct RasterGlyphA8 {
> - Point render_pos;
> - Point glyph_origin;
> - uint16 width;
> - uint16 height;
> - uint8 data[image_size(8, width, height)] @end;
> -} @ctype(SpiceRasterGlyph);
> -
> -struct String {
> - uint16 length;
> - string_flags flags; /* Special: Only one of a1/a4/a8 set */
> - switch (flags) {
> - case RASTER_A1:
> - RasterGlyphA1 glyphs[length] @ctype(SpiceRasterGlyph) @ptr_array;
> - case RASTER_A4:
> - RasterGlyphA4 glyphs[length] @ctype(SpiceRasterGlyph) @ptr_array;
> - case RASTER_A8:
> - RasterGlyphA8 glyphs[length] @ctype(SpiceRasterGlyph) @ptr_array;
> - } u @anon;
> -};
> -
> -struct StreamDataHeader {
> - uint32 id;
> - uint32 multi_media_time;
> -};
> -
> -channel DisplayChannel : BaseChannel {
> - server:
> - message {
> - uint32 x_res;
> - uint32 y_res;
> - uint32 bits;
> - } mode = 101;
> -
> - Empty mark;
> - Empty reset;
> -
> - message {
> - DisplayBase base;
> - Point src_pos;
> - } copy_bits;
> -
> - message {
> - uint16 count;
> - ResourceID resources[count] @end;
> - } @ctype(SpiceResourceList) inval_list;
> -
> - message {
> - uint8 wait_count;
> - WaitForChannel wait_list[wait_count] @end;
> - } @ctype(SpiceMsgWaitForChannels) inval_all_pixmaps;
> -
> - message {
> - uint64 id;
> - } @ctype(SpiceMsgDisplayInvalOne) inval_palette;
> -
> - Empty inval_all_palettes;
> -
> - message {
> - uint32 surface_id @virtual(0);
> - uint32 id;
> - stream_flags flags;
> - video_codec_type codec_type;
> - uint64 stamp;
> - uint32 stream_width;
> - uint32 stream_height;
> - uint32 src_width;
> - uint32 src_height;
> - Rect dest;
> - Clip clip;
> - } stream_create = 122;
> -
> - message {
> - StreamDataHeader base;
> - uint32 data_size;
> - uint32 pad_size @zero;
> - uint8 data[data_size] @end @nomarshal;
> - /* Ignore: uint8 padding[pad_size] */
> - } stream_data;
> -
> - message {
> - uint32 id;
> - Clip clip;
> - } stream_clip;
> -
> - message {
> - uint32 id;
> - } stream_destroy;
> -
> - Empty stream_destroy_all;
> -
> - message {
> - DisplayBase base;
> - struct Fill {
> - Brush brush @outvar(brush);
> - uint16 rop_descriptor;
> - QMask mask @outvar(mask);
> - } data;
> - } draw_fill = 302;
> -
> - message {
> - DisplayBase base;
> - struct Opaque {
> - Image *src_bitmap;
> - Rect src_area;
> - Brush brush;
> - ropd rop_descriptor;
> - image_scale_mode scale_mode;
> - QMask mask @outvar(mask);
> - } data;
> - } draw_opaque;
> -
> - message {
> - DisplayBase base;
> - struct Copy {
> - Image *src_bitmap;
> - Rect src_area;
> - ropd rop_descriptor;
> - image_scale_mode scale_mode;
> - QMask mask @outvar(mask);
> - } data;
> - } draw_copy;
> -
> - message {
> - DisplayBase base;
> - struct Blend {
> - Image *src_bitmap;
> - Rect src_area;
> - ropd rop_descriptor;
> - image_scale_mode scale_mode;
> - QMask mask @outvar(mask);
> - } @ctype(SpiceCopy) data;
> - } draw_blend;
> -
> - message {
> - DisplayBase base;
> - struct Blackness {
> - QMask mask @outvar(mask);
> - } data;
> - } draw_blackness;
> -
> - message {
> - DisplayBase base;
> - struct Whiteness {
> - QMask mask @outvar(mask);
> - } data;
> - } draw_whiteness;
> -
> - message {
> - DisplayBase base;
> - struct Invers {
> - QMask mask @outvar(mask);
> - } data;
> - } draw_invers;
> -
> - message {
> - DisplayBase base;
> - struct Rop3 {
> - Image *src_bitmap;
> - Rect src_area;
> - Brush brush;
> - uint8 rop3;
> - image_scale_mode scale_mode;
> - QMask mask @outvar(mask);
> - } data;
> - } draw_rop3;
> -
> - message {
> - DisplayBase base;
> - struct Stroke {
> - Path *path;
> - LineAttr attr;
> - Brush brush;
> - uint16 fore_mode;
> - uint16 back_mode;
> - } data;
> - } draw_stroke;
> -
> - message {
> - DisplayBase base;
> - struct Text {
> - String *str;
> - Rect back_area;
> - Brush fore_brush @outvar(fore_brush);
> - Brush back_brush @outvar(back_brush);
> - uint16 fore_mode;
> - uint16 back_mode;
> - } data;
> - } draw_text;
> -
> - message {
> - DisplayBase base;
> - struct Transparent {
> - Image *src_bitmap;
> - Rect src_area;
> - uint32 src_color;
> - uint32 true_color;
> - } data;
> - } draw_transparent;
> -
> - message {
> - DisplayBase base;
> - struct AlphaBlend {
> - int8 alpha_flags @virtual(0);
> - uint8 alpha;
> - Image *src_bitmap;
> - Rect src_area;
> - } data;
> - } draw_alpha_blend;
> -
> - client:
> - message {
> - uint8 pixmap_cache_id;
> - int64 pixmap_cache_size; //in pixels
> - uint8 glz_dictionary_id;
> - int32 glz_dictionary_window_size; // in pixels
> - } init = 101;
> -};
> -
> -flags32 keyboard_modifier_flags {
> - SCROLL_LOCK,
> - NUM_LOCK,
> - CAPS_LOCK
> -};
> -
> -enum32 mouse_button {
> - INVALID,
> - LEFT,
> - MIDDLE,
> - RIGHT,
> - UP,
> - DOWN,
> -};
> -
> -flags32 mouse_button_mask {
> - LEFT,
> - MIDDLE,
> - RIGHT
> -};
> -
> -channel InputsChannel : BaseChannel {
> - client:
> - message {
> - uint32 code;
> - } @ctype(SpiceMsgcKeyDown) key_down = 101;
> -
> - message {
> - uint32 code;
> - } @ctype(SpiceMsgcKeyUp) key_up;
> -
> - message {
> - keyboard_modifier_flags modifiers;
> - } @ctype(SpiceMsgcKeyModifiers) key_modifiers;
> -
> - message {
> - int32 dx;
> - int32 dy;
> - mouse_button_mask buttons_state;
> - } @ctype(SpiceMsgcMouseMotion) mouse_motion = 111;
> -
> - message {
> - uint32 x;
> - uint32 y;
> - mouse_button_mask buttons_state;
> - uint8 display_id;
> - } @ctype(SpiceMsgcMousePosition) mouse_position;
> -
> - message {
> - mouse_button button;
> - mouse_button_mask buttons_state;
> - } @ctype(SpiceMsgcMousePress) mouse_press;
> -
> - message {
> - mouse_button button;
> - mouse_button_mask buttons_state;
> - } @ctype(SpiceMsgcMouseRelease) mouse_release;
> -
> - server:
> - message {
> - keyboard_modifier_flags keyboard_modifiers;
> - } init = 101;
> -
> - message {
> - keyboard_modifier_flags modifiers;
> - } key_modifiers;
> -
> - Empty mouse_motion_ack = 111;
> -};
> -
> -enum16 cursor_type {
> - ALPHA,
> - MONO,
> - COLOR4,
> - COLOR8,
> - COLOR16,
> - COLOR24,
> - COLOR32,
> -};
> -
> -flags32 cursor_flags {
> - NONE, /* Means no cursor */
> - CACHE_ME,
> - FROM_CACHE,
> -};
> -
> -struct CursorHeader {
> - uint64 unique;
> - cursor_type type;
> - uint16 width;
> - uint16 height;
> - uint16 hot_spot_x;
> - uint16 hot_spot_y;
> -};
> -
> -struct Cursor {
> - cursor_flags flags;
> - CursorHeader header;
> - uint8 data[] @as_ptr(data_size);
> -};
> -
> -channel CursorChannel : BaseChannel {
> - server:
> - message {
> - Point16 position;
> - uint16 trail_length;
> - uint16 trail_frequency;
> - uint8 visible;
> - Cursor cursor;
> - } init = 101;
> -
> - Empty reset;
> -
> - message {
> - Point16 position;
> - uint8 visible;
> - Cursor cursor;
> - } set;
> -
> - message {
> - Point16 position;
> - } move;
> -
> - Empty hide;
> -
> - message {
> - uint16 length;
> - uint16 frequency;
> - } trail;
> -
> - message {
> - uint64 id;
> - } @ctype(SpiceMsgDisplayInvalOne) inval_one;
> -
> - Empty inval_all;
> -};
> -
> -enum32 audio_data_mode {
> - INVALID,
> - RAW,
> - CELT_0_5_1,
> - OPUS,
> -};
> -
> -enum32 audio_fmt {
> - INVALID,
> - S16,
> -};
> -
> -channel PlaybackChannel : BaseChannel {
> - server:
> - message {
> - uint32 time;
> - uint8 data[] @as_ptr(data_size);
> - } @ctype(SpiceMsgPlaybackPacket) data = 101;
> -
> - message {
> - uint32 time;
> - audio_data_mode mode;
> - uint8 data[] @as_ptr(data_size);
> - } mode;
> -
> - message {
> - uint32 channels;
> - audio_fmt format;
> - uint32 frequency;
> - uint32 time;
> - } start;
> -
> - Empty stop;
> -};
> -
> -channel RecordChannel : BaseChannel {
> - server:
> - message {
> - uint32 channels;
> - audio_fmt format;
> - uint32 frequency;
> - } start = 101;
> -
> - Empty stop;
> - client:
> - message {
> - uint32 time;
> - uint8 data[] @nomarshal @as_ptr(data_size);
> - } @ctype(SpiceMsgcRecordPacket) data = 101;
> -
> - message {
> - uint32 time;
> - audio_data_mode mode;
> - uint8 data[] @as_ptr(data_size);
> - } mode;
> -
> - message {
> - uint32 time;
> - } start_mark;
> -};
> -
> -protocol Spice {
> - MainChannel main = 1;
> - DisplayChannel display;
> - InputsChannel inputs;
> - CursorChannel cursor;
> - PlaybackChannel playback;
> - RecordChannel record;
> -};
> --
> 2.17.1
>
>
More information about the Spice-devel
mailing list