[Spice-devel] [RFC v4 37/62] server/red_worker: use pipe_size helpers

Alon Levy alevy at redhat.com
Tue Apr 26 03:55:02 PDT 2011


---
 server/red_worker.c |   20 ++++++++++++--------
 1 files changed, 12 insertions(+), 8 deletions(-)

diff --git a/server/red_worker.c b/server/red_worker.c
index 79fffd1..3599b05 100644
--- a/server/red_worker.c
+++ b/server/red_worker.c
@@ -4336,7 +4336,7 @@ static int red_process_cursor(RedWorker *worker, uint32_t max_pipe_size, int *ri
 
     *ring_is_empty = FALSE;
     while (!cursor_connected(worker) ||
-           worker->cursor_channel->common.base.rcc->pipe_size <= max_pipe_size) {
+           red_channel_min_pipe_size(&worker->cursor_channel->common.base) <= max_pipe_size) {
         if (!worker->qxl->st->qif->get_cursor_command(worker->qxl, &ext_cmd)) {
             *ring_is_empty = TRUE;
             if (worker->repoll_cursor_ring < CMD_RING_POLL_RETRIES) {
@@ -4374,10 +4374,10 @@ static int red_process_commands(RedWorker *worker, uint32_t max_pipe_size, int *
     QXLCommandExt ext_cmd;
     int n = 0;
     uint64_t start = red_now();
-    
+
     *ring_is_empty = FALSE;
-    while (!display_connected(worker)
-           || worker->display_channel->common.base.rcc->pipe_size <= max_pipe_size) {
+    while (!display_connected(worker) ||
+           red_channel_min_pipe_size(&worker->display_channel->common.base) <= max_pipe_size) {
         if (!worker->qxl->st->qif->get_command(worker->qxl, &ext_cmd)) {
             *ring_is_empty = TRUE;;
             if (worker->repoll_cmd_ring < CMD_RING_POLL_RETRIES) {
@@ -8694,6 +8694,8 @@ static void red_wait_outgoing_items(RedChannel *channel);
 
 static inline void flush_display_commands(RedWorker *worker)
 {
+    RedChannel *display_red_channel = &worker->display_channel->common.base;
+
     for (;;) {
         uint64_t end_time;
         int ring_is_empty;
@@ -8715,7 +8717,7 @@ static inline void flush_display_commands(RedWorker *worker)
         for (;;) {
             red_channel_push(&worker->display_channel->common.base);
             if (!display_connected(worker) ||
-                 worker->display_channel->common.base.rcc->pipe_size <= MAX_PIPE_SIZE) {
+                red_channel_min_pipe_size(display_red_channel) <= MAX_PIPE_SIZE) {
                 break;
             }
             RedChannel *channel = (RedChannel *)worker->display_channel;
@@ -8736,6 +8738,8 @@ static inline void flush_display_commands(RedWorker *worker)
 
 static inline void flush_cursor_commands(RedWorker *worker)
 {
+    RedChannel *cursor_red_channel = &worker->cursor_channel->common.base;
+
     for (;;) {
         uint64_t end_time;
         int ring_is_empty = FALSE;
@@ -8757,7 +8761,7 @@ static inline void flush_cursor_commands(RedWorker *worker)
         for (;;) {
             red_channel_push(&worker->cursor_channel->common.base);
             if (!cursor_connected(worker)
-                || worker->cursor_channel->common.base.rcc->pipe_size <= MAX_PIPE_SIZE) {
+                || red_channel_min_pipe_size(cursor_red_channel) <= MAX_PIPE_SIZE) {
                 break;
             }
             RedChannel *channel = (RedChannel *)worker->cursor_channel;
@@ -10089,9 +10093,9 @@ static void handle_dev_input(EventListener *listener, uint32_t events)
             red_channel_push(&worker->display_channel->common.base);
         }
         if (worker->qxl->st->qif->flush_resources(worker->qxl) == 0) {
-            red_printf("oom current %u pipe %u", worker->surfaces.current_size,
+            red_printf("oom current %u pipes %u", worker->surfaces.current_size,
                        worker->display_channel ?
-                       display_red_channel->rcc->pipe_size : 0);
+                       red_channel_sum_pipes_size(display_red_channel) : 0);
             red_free_some(worker);
             worker->qxl->st->qif->flush_resources(worker->qxl);
         }
-- 
1.7.4.4



More information about the Spice-devel mailing list