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