[Spice-devel] [PATCH 06/24] worker: move red_process_draw to display-channel.c

Frediano Ziglio fziglio at redhat.com
Tue Dec 1 04:05:18 PST 2015


Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
---
 server/display-channel.c | 25 +++++++++++++++++++++----
 server/display-channel.h |  7 ++-----
 server/red_worker.c      | 21 ++-------------------
 3 files changed, 25 insertions(+), 28 deletions(-)

diff --git a/server/display-channel.c b/server/display-channel.c
index 45594d8..15120c3 100644
--- a/server/display-channel.c
+++ b/server/display-channel.c
@@ -1091,9 +1091,9 @@ static int validate_drawable_bbox(DisplayChannel *display, RedDrawable *drawable
         return TRUE;
 }
 
-Drawable *display_channel_get_drawable(DisplayChannel *display, uint8_t effect,
-                                       RedDrawable *red_drawable, uint32_t group_id,
-                                       uint32_t process_commands_generation)
+static Drawable *display_channel_get_drawable(DisplayChannel *display, uint8_t effect,
+                                              RedDrawable *red_drawable, uint32_t group_id,
+                                              uint32_t process_commands_generation)
 {
     Drawable *drawable;
     int x;
@@ -1131,7 +1131,7 @@ Drawable *display_channel_get_drawable(DisplayChannel *display, uint8_t effect,
     return drawable;
 }
 
-void display_channel_add_drawable(DisplayChannel *display, Drawable *drawable)
+static void display_channel_add_drawable(DisplayChannel *display, Drawable *drawable)
 {
     int success = FALSE, surface_id = drawable->surface_id;
     RedDrawable *red_drawable = drawable->red_drawable;
@@ -1181,6 +1181,23 @@ void display_channel_add_drawable(DisplayChannel *display, Drawable *drawable)
 #endif
 }
 
+void display_channel_process_draw(DisplayChannel *display, RedDrawable *red_drawable,
+                                  uint32_t group_id, int process_commands_generation)
+{
+    Drawable *drawable =
+        display_channel_get_drawable(display, red_drawable->effect, red_drawable, group_id,
+                                     process_commands_generation);
+
+    if (!drawable) {
+        return;
+    }
+
+    display_channel_add_drawable(display, drawable);
+
+    display_channel_drawable_unref(display, drawable);
+}
+
+
 int display_channel_wait_for_migrate_data(DisplayChannel *display)
 {
     uint64_t end_time = red_get_monotonic_time() + DISPLAY_CLIENT_MIGRATE_DATA_TIMEOUT;
diff --git a/server/display-channel.h b/server/display-channel.h
index 195004d..0b9259d 100644
--- a/server/display-channel.h
+++ b/server/display-channel.h
@@ -286,8 +286,6 @@ void                       display_channel_surface_unref             (DisplayCha
                                                                       uint32_t surface_id);
 bool                       display_channel_surface_has_canvas        (DisplayChannel *display,
                                                                       uint32_t surface_id);
-void                       display_channel_add_drawable              (DisplayChannel *display,
-                                                                      Drawable *drawable);
 void                       display_channel_current_flush             (DisplayChannel *display,
                                                                       int surface_id);
 int                        display_channel_wait_for_migrate_data     (DisplayChannel *display);
@@ -300,11 +298,10 @@ void                       display_channel_destroy_surfaces          (DisplayCha
 void                       display_channel_destroy_surface           (DisplayChannel *display,
                                                                       uint32_t surface_id);
 uint32_t                   display_channel_generate_uid              (DisplayChannel *display);
-Drawable *                 display_channel_get_drawable              (DisplayChannel *display,
-                                                                      uint8_t effect,
+void                       display_channel_process_draw              (DisplayChannel *display,
                                                                       RedDrawable *red_drawable,
                                                                       uint32_t group_id,
-                                                                      uint32_t process_commands_generation);
+                                                                      int process_commands_generation);
 
 static inline int validate_surface(DisplayChannel *display, uint32_t surface_id)
 {
diff --git a/server/red_worker.c b/server/red_worker.c
index cf61108..19cf393 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -172,24 +172,6 @@ void red_drawable_unref(RedWorker *worker, RedDrawable *red_drawable,
     free(red_drawable);
 }
 
-static inline void red_process_draw(RedWorker *worker, RedDrawable *red_drawable,
-                                    uint32_t group_id)
-{
-    DisplayChannel *display = worker->display_channel;
-    Drawable *drawable =
-        display_channel_get_drawable(display, red_drawable->effect, red_drawable, group_id,
-                                     worker->process_commands_generation);
-
-    if (!drawable) {
-        return;
-    }
-
-    display_channel_add_drawable(worker->display_channel, drawable);
-
-    display_channel_drawable_unref(display, drawable);
-}
-
-
 static inline void red_process_surface(RedWorker *worker, RedSurfaceCmd *surface,
                                        uint32_t group_id, int loadvm)
 {
@@ -342,7 +324,8 @@ static int red_process_commands(RedWorker *worker, uint32_t max_pipe_size, int *
 
             if (!red_get_drawable(&worker->mem_slots, ext_cmd.group_id,
                                  red_drawable, ext_cmd.cmd.data, ext_cmd.flags)) {
-                red_process_draw(worker, red_drawable, ext_cmd.group_id);
+                display_channel_process_draw(worker->display_channel, red_drawable, ext_cmd.group_id,
+                                             worker->process_commands_generation);
             }
             // release the red_drawable
             red_drawable_unref(worker, red_drawable, ext_cmd.group_id);
-- 
2.4.3



More information about the Spice-devel mailing list