Hi, On Fri, Sep 28, 2018 at 03:41:29AM -0400, Frediano Ziglio wrote: > ping Sorry, I was pretty sure that I acked this because I did run some tests and found nothing wrong at time. Probably forgot to come back. Acked-by: Victor Toso <victortoso@xxxxxxxxxx> > > 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@xxxxxxxxxx> > > --- > > 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 > > > > > _______________________________________________ > Spice-devel mailing list > Spice-devel@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/spice-devel
Attachment:
signature.asc
Description: PGP signature
_______________________________________________ Spice-devel mailing list Spice-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/spice-devel