--- a/server/spice.h
+++ b/server/spice.h
@@ -122,6 +122,16 @@ struct QXLWorker {
      void (*reset_cursor)(QXLWorker *worker);
      void (*destroy_surface_wait)(QXLWorker *worker, uint32_t surface_id);
      void (*loadvm_commands)(QXLWorker *worker, struct QXLCommandExt *ext, 
uint32_t count);
+    /* async versions of commands. when complete spice calls async_complete */
+    void (*update_area_async)(QXLWorker *qxl_worker, uint32_t surface_id,
+                       struct QXLRect *area, uint32_t clear_dirty_region,
+                       uint64_t cookie);
+    void (*add_memslot_async)(QXLWorker *worker, QXLDevMemSlot *slot, uint64_t 
cookie);
+    void (*destroy_surfaces_async)(QXLWorker *worker, uint64_t cookie);
+    void (*destroy_primary_surface_async)(QXLWorker *worker, uint32_t 
surface_id, uint64_t cookie);
+    void (*create_primary_surface_async)(QXLWorker *worker, uint32_t 
surface_id,
+                                   QXLDevSurfaceCreate *surface, uint64_t 
cookie);
+    void (*destroy_surface_wait_async)(QXLWorker *worker, uint32_t surface_id, 
uint64_t cookie);
  };

Is there any reason to go this indirect route through QXLWorker in the first place (other than historical ones)? We can do this instead:

   SPICE_GNUC_VISIBLE void
   spice_qxl_update_area(QXLInstance *qxl, uint32_t surface_id,
                         QXLRect *qxl_area, QXLRect *qxl_dirty_rects,
                         uint32_t num_dirty_rects,
                         uint32_t clear_dirty_region)
   {
       qxl_worker_update_area(&qxl->st->dispatcher->base, surface_id,
                              qxl_area, qxl_dirty_rects,
                              num_dirty_rects, clear_dirty_region);
   }

Then have qemu call spice_qxl_update_area() directly instead of worker->update_area(). Likewise for all others. We obviously have to keep the old indirect code path for the existing calls for compatibility reasons.

I'd like to see all new calls go direct (and only direct). Having direct calls for the old ones would be nice too.

This will (a) remove the pointless indirection and (b) make shared library versioning alot easier as we'll get new linker symbols which we can tag with the version they appeared in the shared library.

cheers,
  Gerd


cheers,
  Gerd

_______________________________________________
Spice-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to