On 07/06/2011 08:37 PM, Alon Levy wrote:
This does three things:
  flush both command rings
  stop (rendering everything)
  start

Pulled out start and stop to their own functions to do this easily.
The added api is specifically async, i.e. it calls async_complete
when done.

Hi,
after flushing the qxl commands, flush_surfaces doesn't need to call stop and start, it just needs the start part that flushes the surfaces and waits for the channels outgoing items. destroy_surfaces that will come afterwards for S3, will clean the glz drawbales
h b/server/red_worker.h
index 9ed7156..aae025b 100644
--- a/server/red_worker.h
+++ b/server/red_worker.h
@@ -78,6 +78,8 @@ enum {
      RED_WORKER_MESSAGE_DESTROY_PRIMARY_SURFACE_ASYNC,
      RED_WORKER_MESSAGE_DESTROY_SURFACE_WAIT_ASYNC,
      RED_WORKER_MESSAGE_OOM_ASYNC,
+    /* suspend command */
maybe mention it is not only suspend (everything that triggeres DrvAssertMode(disable) in Windows guest)
+    RED_WORKER_MESSAGE_FLUSH_SURFACES_ASYNC,
  };

  typedef uint32_t RedWorkerMessage;
diff --git a/server/spice.h b/server/spice.h
index f0d5685..a715666 100644
--- a/server/spice.h
+++ b/server/spice.h
@@ -133,6 +133,8 @@ struct QXLWorker {
                                     QXLDevSurfaceCreate *surface);
      void (*destroy_surface_wait_async)(QXLWorker *worker, uint32_t 
surface_id);
      void (*oom_async)(QXLWorker *worker);
+    /* suspend support - stop+start+read_cmd_ring */
+    void (*flush_surfaces_async)(QXLWorker *worker);
  };

  typedef struct QXLDrawArea {

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

Reply via email to