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@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