On 07/06/2011 08:37 PM, Alon Levy wrote:
The new _ASYNC io's in qxl_dev listed at the end get six new api
functions, and an additional callback function "async_complete". When
the async version of a specific io is used, completion is notified by
calling async_complete, and no READY message is written or expected by
the dispatcher.

update_area has been changed to push QXLRects to the worker thread, where
the conversion to SpiceRect takes place.

Added api:

QXLWorker:
     update_area_async
     add_memslot_async
     destroy_surfaces_async
     destroy_primary_surface_async
     create_primary_surface_async
     destroy_surface_wait_async
     oom_async



-static void qxl_worker_oom(QXLWorker *qxl_worker)
+static void qxl_worker_oom_helper(QXLWorker *qxl_worker, int async)
  {
      RedDispatcher *dispatcher = (RedDispatcher *)qxl_worker;
+    RedWorkerMessage message;
+
      if (!test_bit(RED_WORKER_PENDING_OOM, dispatcher->pending)) {
-        RedWorkerMessage message = RED_WORKER_MESSAGE_OOM;
+        if (async) {
+            message = RED_WORKER_MESSAGE_OOM_ASYNC;
+        } else {
+            message = RED_WORKER_MESSAGE_OOM;
+        }
          set_bit(RED_WORKER_PENDING_OOM,&dispatcher->pending);
          write_message(dispatcher->channel,&message);
      }
  }


OOM has always been async - do we need two different RED_WORKER_MESSAGEs?

+static void qxl_worker_oom(QXLWorker *qxl_worker)
+{
+    qxl_worker_oom_helper(qxl_worker, 0);
+}
+
+static void qxl_worker_oom_async(QXLWorker *qxl_worker)
+{
+    qxl_worker_oom_helper(qxl_worker, 1);
+}
+

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

Reply via email to