Add SPICE_MSG_DISPLAY_STREAM_DATA_SIZED, for stream_data message
that also contains the size and destination box of the data.
The server can send such messages only to clients with
SPICE_DISPLAY_CAP_SIZED_STREAM.

Signed-off-by: Yonit Halperin <yhalp...@redhat.com>
---
 common/messages.h |   15 ++++++++++++++-
 spice.proto       |   19 ++++++++++++++++---
 spice1.proto      |    8 ++++++--
 3 files changed, 36 insertions(+), 6 deletions(-)

diff --git a/common/messages.h b/common/messages.h
index 58e8bee..f7bc32a 100644
--- a/common/messages.h
+++ b/common/messages.h
@@ -307,13 +307,26 @@ typedef struct SpiceMsgDisplayStreamCreate {
     SpiceClip clip;
 } SpiceMsgDisplayStreamCreate;
 
-typedef struct SpiceMsgDisplayStreamData {
+typedef struct SpiceStreamDataHeader {
     uint32_t id;
     uint32_t multi_media_time;
+} SpiceStreamDataHeader;
+
+typedef struct SpiceMsgDisplayStreamData {
+    SpiceStreamDataHeader base;
     uint32_t data_size;
     uint8_t data[0];
 } SpiceMsgDisplayStreamData;
 
+typedef struct SpiceMsgDisplayStreamDataSized {
+    SpiceStreamDataHeader base;
+    uint32_t width;
+    uint32_t height;
+    SpiceRect dest;
+    uint32_t data_size;
+    uint8_t data[0];
+} SpiceMsgDisplayStreamDataSized;
+
 typedef struct SpiceMsgDisplayStreamClip {
     uint32_t id;
     SpiceClip clip;
diff --git a/spice.proto b/spice.proto
index 513fe87..71be9ac 100644
--- a/spice.proto
+++ b/spice.proto
@@ -591,6 +591,11 @@ struct String {
     } u @anon;
 };
 
+struct StreamDataHeader {
+       uint32 id;
+       uint32 multi_media_time;
+};
+
 channel DisplayChannel : BaseChannel {
  server:
     message {
@@ -637,10 +642,9 @@ channel DisplayChannel : BaseChannel {
     } stream_create = 122;
 
     message {
-       uint32 id;
-       uint32 multi_media_time;
+       StreamDataHeader base;
        uint32 data_size;
-       uint8 data[data_size] @end  @nomarshal;
+       uint8 data[data_size] @end @nomarshal;
     } stream_data;
 
     message {
@@ -785,6 +789,15 @@ channel DisplayChannel : BaseChannel {
        uint32 surface_id;
     } @ctype(SpiceMsgSurfaceDestroy) surface_destroy;
 
+    message {
+       StreamDataHeader base;
+       uint32 width;
+       uint32 height;
+       Rect dest;
+       uint32 data_size;
+       uint8 data[data_size] @end @nomarshal;
+    } stream_data_sized;
+
  client:
     message {
        uint8 pixmap_cache_id;
diff --git a/spice1.proto b/spice1.proto
index fa2524b..2ed1058 100644
--- a/spice1.proto
+++ b/spice1.proto
@@ -533,6 +533,11 @@ struct String {
     } u @anon;
 };
 
+struct StreamDataHeader {
+       uint32 id;
+       uint32 multi_media_time;
+};
+
 channel DisplayChannel : BaseChannel {
  server:
     message {
@@ -580,8 +585,7 @@ channel DisplayChannel : BaseChannel {
     } stream_create = 122;
 
     message {
-       uint32 id;
-       uint32 multi_media_time;
+       StreamDataHeader base;
        uint32 data_size;
        uint32 pad_size @zero;
        uint8 data[data_size] @end  @nomarshal;
-- 
1.7.7.6

_______________________________________________
Spice-devel mailing list
Spice-devel@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to