diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2010-06-24 16:12:17 +0200 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2010-06-29 12:30:20 +0200 |
commit | 58c23b66860def72f6b5186d77b5e047964e40cb (patch) | |
tree | fdc46ea6610264bd34cafcbbef079924d94a01d9 /server/red_dispatcher.c | |
parent | 4fb61b9aa5c092db1f8fcbd51f7967ccfda364ac (diff) | |
download | spice-58c23b66860def72f6b5186d77b5e047964e40cb.tar.gz spice-58c23b66860def72f6b5186d77b5e047964e40cb.tar.xz spice-58c23b66860def72f6b5186d77b5e047964e40cb.zip |
qxl abi: parse QXLRect.
Diffstat (limited to 'server/red_dispatcher.c')
-rw-r--r-- | server/red_dispatcher.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/server/red_dispatcher.c b/server/red_dispatcher.c index 4368cf60..dbc82d4a 100644 --- a/server/red_dispatcher.c +++ b/server/red_dispatcher.c @@ -32,6 +32,7 @@ #include "gl_canvas.h" #include "reds.h" #include "red_dispatcher.h" +#include "red_parse_qxl.h" static int num_active_workers = 0; @@ -200,11 +201,16 @@ static void update_client_mouse_allowed() } static void qxl_worker_update_area(QXLWorker *qxl_worker, uint32_t surface_id, - SpiceRect *area, SpiceRect *dirty_rects, + QXLRect *qxl_area, QXLRect *qxl_dirty_rects, uint32_t num_dirty_rects, uint32_t clear_dirty_region) { RedDispatcher *dispatcher = (RedDispatcher *)qxl_worker; RedWorkerMessage message = RED_WORKER_MESSAGE_UPDATE; + SpiceRect *dirty_rects = spice_new0(SpiceRect, num_dirty_rects); + SpiceRect *area = spice_new0(SpiceRect, 1); + int i; + + red_get_rect_ptr(area, qxl_area); write_message(dispatcher->channel, &message); send_data(dispatcher->channel, &surface_id, sizeof(uint32_t)); @@ -214,6 +220,16 @@ static void qxl_worker_update_area(QXLWorker *qxl_worker, uint32_t surface_id, send_data(dispatcher->channel, &clear_dirty_region, sizeof(uint32_t)); read_message(dispatcher->channel, &message); ASSERT(message == RED_WORKER_MESSAGE_READY); + + for (i = 0; i < num_dirty_rects; i++) { + qxl_dirty_rects[i].top = dirty_rects[i].top; + qxl_dirty_rects[i].left = dirty_rects[i].left; + qxl_dirty_rects[i].bottom = dirty_rects[i].bottom; + qxl_dirty_rects[i].right = dirty_rects[i].right; + } + + free(dirty_rects); + free(area); } static void qxl_worker_add_memslot(QXLWorker *qxl_worker, QXLDevMemSlot *mem_slot) |