[Spice-devel] [PATCH 15/18] worker: s/validate_area/surface_update_dest

Frediano Ziglio fziglio at redhat.com
Mon Nov 23 09:02:01 PST 2015


From: Marc-André Lureau <marcandre.lureau at gmail.com>

---
 server/red_worker.c | 35 ++++++++++++++++-------------------
 1 file changed, 16 insertions(+), 19 deletions(-)

diff --git a/server/red_worker.c b/server/red_worker.c
index becd42f..a82a871 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -936,26 +936,23 @@ static void image_surface_init(DisplayChannel *display)
     display->image_surfaces.ops = &image_surfaces_ops;
 }
 
-static void validate_area(DisplayChannel *display, const SpiceRect *area, uint32_t surface_id)
+static void surface_update_dest(RedSurface *surface, const SpiceRect *area)
 {
-    RedSurface *surface;
+    SpiceCanvas *canvas = surface->context.canvas;
+    int h = area->bottom - area->top;
+    int stride = surface->context.stride;
+    uint8_t *line_0 = surface->context.line_0;
 
-    surface = &display->surfaces[surface_id];
-    if (!surface->context.canvas_draws_on_surface) {
-        SpiceCanvas *canvas = surface->context.canvas;
-        int h;
-        int stride = surface->context.stride;
-        uint8_t *line_0 = surface->context.line_0;
+    if (surface->context.canvas_draws_on_surface)
+        return;
+    if (h == 0)
+        return;
 
-        if (!(h = area->bottom - area->top)) {
-            return;
-        }
+    spice_return_if_fail(stride < 0);
 
-        spice_assert(stride < 0);
-        uint8_t *dest = line_0 + (area->top * stride) + area->left * sizeof(uint32_t);
-        dest += (h - 1) * stride;
-        canvas->ops->read_bits(canvas, dest, -stride, area);
-    }
+    uint8_t *dest = line_0 + (area->top * stride) + area->left * sizeof(uint32_t);
+    dest += (h - 1) * stride;
+    canvas->ops->read_bits(canvas, dest, -stride, area);
 }
 
 /*
@@ -1037,7 +1034,7 @@ void display_channel_draw_till(DisplayChannel *display, const SpiceRect *area, i
         drawable_draw(display, now);
         display_channel_drawable_unref(display, now);
     } while (now != surface_last);
-    validate_area(display, area, surface_id);
+    surface_update_dest(surface, area);
 }
 
 void display_channel_draw(DisplayChannel *display, const SpiceRect *area, int surface_id)
@@ -1074,7 +1071,7 @@ void display_channel_draw(DisplayChannel *display, const SpiceRect *area, int su
     region_destroy(&rgn);
 
     if (!last) {
-        validate_area(display, area, surface_id);
+        surface_update_dest(surface, area);
         return;
     }
 
@@ -1090,7 +1087,7 @@ void display_channel_draw(DisplayChannel *display, const SpiceRect *area, int su
         drawable_draw(display, now);
         display_channel_drawable_unref(display, now);
     } while (now != last);
-    validate_area(display, area, surface_id);
+    surface_update_dest(surface, area);
 }
 
 static int red_process_cursor(RedWorker *worker, uint32_t max_pipe_size, int *ring_is_empty)
-- 
2.4.3



More information about the Spice-devel mailing list