Re: [PATCH spice-common v2] proto: Remove support for SPICE version 1

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> On Fri, 2018-09-28 at 03:41 -0400, Frediano Ziglio wrote:
> > ping
> 
> Sorry, I was thinking how to handle this and eventually forgot about
> it. Two notes:
> 
> 1. Without really looking into the differences in the protocol, I would
> expect some part of the spice_codegen.py that was specific to the old
> protocol should be removed as well?
> 

Yes, sent some follow ups.

> 2. I think this removal of backwards compatibility should be documented
> somewhere, along with the versions of SPICE server/client with which it
> breaks compatibility. I also think we should use major versions to make
> compatibility breakage obvious.
> 

There's the NEWS file which is usually updated before release but it
won't be a bad idea to update it along the way so to not forget and
to avoid the people doing the release to parse all the commit log.
About the major we don't bump much the major... actually is still a 0.XX
version.

> Cheers,
> Lukas
> 
> > > 
> > > 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;
> > > -};
_______________________________________________
Spice-devel mailing list
Spice-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.freedesktop.org/mailman/listinfo/spice-devel




[Index of Archives]     [Linux Virtualization]     [Linux Virtualization]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]     [Monitors]