[Spice-devel] [spice-server 4/4] streaming: Simplify is_next_stream_frame()

Christophe Fergeau cfergeau at redhat.com
Fri Jun 10 13:48:28 UTC 2016


From: Francois Gouget <fgouget at codeweavers.com>

After the removal of Drawable::sized_stream, we no longer need to detect
if the stream changes size in is_next_stream_frame() so it can return a
boolean rather than a value from an enum.
---
 server/stream.c | 59 ++++++++++++++++++++++++++++-----------------------------
 server/stream.h |  6 ------
 2 files changed, 29 insertions(+), 36 deletions(-)

diff --git a/server/stream.c b/server/stream.c
index 457ee47..d791918 100644
--- a/server/stream.c
+++ b/server/stream.c
@@ -216,24 +216,24 @@ static void update_copy_graduality(DisplayChannel *display, Drawable *drawable)
     }
 }
 
-static int is_next_stream_frame(DisplayChannel *display,
-                                const Drawable *candidate,
-                                const int other_src_width,
-                                const int other_src_height,
-                                const SpiceRect *other_dest,
-                                const red_time_t other_time,
-                                const Stream *stream,
-                                int container_candidate_allowed)
+static bool is_next_stream_frame(DisplayChannel *display,
+                                 const Drawable *candidate,
+                                 const int other_src_width,
+                                 const int other_src_height,
+                                 const SpiceRect *other_dest,
+                                 const red_time_t other_time,
+                                 const Stream *stream,
+                                 int container_candidate_allowed)
 {
     RedDrawable *red_drawable;
 
     if (!candidate->streamable) {
-        return STREAM_FRAME_NONE;
+        return FALSE;
     }
 
     if (candidate->creation_time - other_time >
             (stream ? RED_STREAM_CONTINUS_MAX_DELTA : RED_STREAM_DETACTION_MAX_DELTA)) {
-        return STREAM_FRAME_NONE;
+        return FALSE;
     }
 
     red_drawable = candidate->red_drawable;
@@ -241,13 +241,13 @@ static int is_next_stream_frame(DisplayChannel *display,
         SpiceRect* candidate_src;
 
         if (!rect_is_equal(&red_drawable->bbox, other_dest)) {
-            return STREAM_FRAME_NONE;
+            return FALSE;
         }
 
         candidate_src = &red_drawable->u.copy.src_area;
         if (candidate_src->right - candidate_src->left != other_src_width ||
             candidate_src->bottom - candidate_src->top != other_src_height) {
-            return STREAM_FRAME_NONE;
+            return FALSE;
         }
     } else {
         if (rect_contains(&red_drawable->bbox, other_dest)) {
@@ -261,20 +261,20 @@ static int is_next_stream_frame(DisplayChannel *display,
                 rect_debug(other_dest);
                 spice_debug("new box ==>");
                 rect_debug(&red_drawable->bbox);
-                return STREAM_FRAME_NONE;
+                return FALSE;
             }
         } else {
-            return STREAM_FRAME_NONE;
+            return FALSE;
         }
     }
 
     if (stream) {
         SpiceBitmap *bitmap = &red_drawable->u.copy.src_bitmap->u.bitmap;
         if (stream->top_down != !!(bitmap->flags & SPICE_BITMAP_FLAGS_TOP_DOWN)) {
-            return STREAM_FRAME_NONE;
+            return FALSE;
         }
     }
-    return STREAM_FRAME_NATIVE;
+    return TRUE;
 }
 
 static void attach_stream(DisplayChannel *display, Drawable *drawable, Stream *stream)
@@ -513,15 +513,15 @@ void stream_trace_update(DisplayChannel *display, Drawable *drawable)
 
     FOREACH_STREAMS(display, item) {
         Stream *stream = SPICE_CONTAINEROF(item, Stream, link);
-        int is_next_frame = is_next_stream_frame(display,
-                                                 drawable,
-                                                 stream->width,
-                                                 stream->height,
-                                                 &stream->dest_area,
-                                                 stream->last_time,
-                                                 stream,
-                                                 TRUE);
-        if (is_next_frame != STREAM_FRAME_NONE) {
+        bool is_next_frame = is_next_stream_frame(display,
+                                                  drawable,
+                                                  stream->width,
+                                                  stream->height,
+                                                  &stream->dest_area,
+                                                  stream->last_time,
+                                                  stream,
+                                                  TRUE);
+        if (is_next_frame) {
             if (stream->current) {
                 stream->current->streamable = FALSE; //prevent item trace
                 before_reattach_stream(display, stream, drawable);
@@ -536,8 +536,7 @@ void stream_trace_update(DisplayChannel *display, Drawable *drawable)
     trace_end = trace + NUM_TRACE_ITEMS;
     for (; trace < trace_end; trace++) {
         if (is_next_stream_frame(display, drawable, trace->width, trace->height,
-                                       &trace->dest_area, trace->time, NULL, FALSE) !=
-                                       STREAM_FRAME_NONE) {
+                                 &trace->dest_area, trace->time, NULL, FALSE)) {
             if (stream_add_frame(display, drawable,
                                  trace->first_frame_time,
                                  trace->frames_count,
@@ -552,7 +551,7 @@ void stream_trace_update(DisplayChannel *display, Drawable *drawable)
 void stream_maintenance(DisplayChannel *display,
                         Drawable *candidate, Drawable *prev)
 {
-    int is_next_frame;
+    bool is_next_frame;
 
     if (candidate->stream) {
         return;
@@ -565,7 +564,7 @@ void stream_maintenance(DisplayChannel *display,
                                              stream->width, stream->height,
                                              &stream->dest_area, stream->last_time,
                                              stream, TRUE);
-        if (is_next_frame != STREAM_FRAME_NONE) {
+        if (is_next_frame) {
             before_reattach_stream(display, stream, candidate);
             detach_stream(display, stream);
             prev->streamable = FALSE; //prevent item trace
@@ -580,7 +579,7 @@ void stream_maintenance(DisplayChannel *display,
                                  &prev->red_drawable->bbox, prev->creation_time,
                                  prev->stream,
                                  FALSE);
-        if (is_next_frame != STREAM_FRAME_NONE) {
+        if (is_next_frame) {
             stream_add_frame(display, candidate,
                              prev->first_frame_time,
                              prev->frames_count,
diff --git a/server/stream.h b/server/stream.h
index 94ced44..9dcb8f7 100644
--- a/server/stream.h
+++ b/server/stream.h
@@ -52,12 +52,6 @@ typedef struct RedStreamActivateReportItem {
     uint32_t stream_id;
 } RedStreamActivateReportItem;
 
-enum {
-    STREAM_FRAME_NONE,
-    STREAM_FRAME_NATIVE,
-    STREAM_FRAME_CONTAINER,
-};
-
 #define STREAM_STATS
 #ifdef STREAM_STATS
 typedef struct StreamStats {
-- 
2.7.4



More information about the Spice-devel mailing list