From 08cfd6beaff1bfd59c5883b4d07a964eb8644595 Mon Sep 17 00:00:00 2001 From: Gerd Hoffmann Date: Wed, 23 Jun 2010 09:49:35 +0200 Subject: qxl abi: parse QXLOpaque. Also adapt to tyops fix (s/rop_decriptor/rop_descriptor/). --- common/canvas_base.c | 2 +- common/gl_canvas.c | 4 ++-- server/red_parse_qxl.c | 23 +++++++++++++++++++++++ server/red_worker.c | 2 +- spice.proto | 2 +- spice1.proto | 2 +- 6 files changed, 29 insertions(+), 6 deletions(-) diff --git a/common/canvas_base.c b/common/canvas_base.c index 68ea1a67..debbd461 100644 --- a/common/canvas_base.c +++ b/common/canvas_base.c @@ -2518,7 +2518,7 @@ static void canvas_draw_opaque(SpiceCanvas *spice_canvas, SpiceRect *bbox, Spice canvas_mask_pixman(canvas, &dest_region, &opaque->mask, bbox->left, bbox->top); - rop = ropd_descriptor_to_rop(opaque->rop_decriptor, + rop = ropd_descriptor_to_rop(opaque->rop_descriptor, ROP_INPUT_BRUSH, ROP_INPUT_SRC); diff --git a/common/gl_canvas.c b/common/gl_canvas.c index 2773edab..1fe08aee 100644 --- a/common/gl_canvas.c +++ b/common/gl_canvas.c @@ -389,7 +389,7 @@ static void gl_canvas_draw_opaque(SpiceCanvas *spice_canvas, SpiceRect *bbox, Sp set_clip(canvas, bbox, clip); set_mask(canvas, &opaque->mask, bbox->left, bbox->top); - glc_set_op(canvas->glc, (opaque->rop_decriptor & SPICE_ROPD_INVERS_SRC) ? GLC_OP_COPY_INVERTED : + glc_set_op(canvas->glc, (opaque->rop_descriptor & SPICE_ROPD_INVERS_SRC) ? GLC_OP_COPY_INVERTED : GLC_OP_COPY); surface = canvas_get_image(&canvas->base, opaque->src_bitmap, FALSE); surface_to_image(canvas, surface, &image, 0); @@ -399,7 +399,7 @@ static void gl_canvas_draw_opaque(SpiceCanvas *spice_canvas, SpiceRect *bbox, Sp pixman_image_unref(surface); set_brush(canvas, &opaque->brush); - set_op(canvas, opaque->rop_decriptor & ~SPICE_ROPD_INVERS_SRC); + set_op(canvas, opaque->rop_descriptor & ~SPICE_ROPD_INVERS_SRC); SET_GLC_RECT(&fill_rect, bbox); glc_fill_rect(canvas->glc, &fill_rect); diff --git a/server/red_parse_qxl.c b/server/red_parse_qxl.c index 7dad295b..0620fcb3 100644 --- a/server/red_parse_qxl.c +++ b/server/red_parse_qxl.c @@ -28,6 +28,17 @@ static void red_get_fill_ptr(RedMemSlotInfo *slots, int group_id, red->mask = qxl->mask; } +static void red_get_opaque_ptr(RedMemSlotInfo *slots, int group_id, + SpiceOpaque *red, QXLOpaque *qxl) +{ + red->src_bitmap = qxl->src_bitmap; + red->src_area = qxl->src_area; + red->brush = qxl->brush; + red->rop_descriptor = qxl->rop_descriptor; + red->scale_mode = qxl->scale_mode; + red->mask = qxl->mask; +} + static void red_get_alpha_blend_ptr(RedMemSlotInfo *slots, int group_id, SpiceAlphaBlnd *red, QXLAlphaBlnd *qxl) { @@ -85,6 +96,9 @@ void red_get_drawable(RedMemSlotInfo *slots, int group_id, case QXL_DRAW_FILL: red_get_fill_ptr(slots, group_id, &red->u.fill, &qxl->u.fill); break; + case QXL_DRAW_OPAQUE: + red_get_opaque_ptr(slots, group_id, &red->u.opaque, &qxl->u.opaque); + break; case QXL_DRAW_INVERS: red->u.invers = qxl->u.invers; break; @@ -105,6 +119,9 @@ void red_get_drawable(RedMemSlotInfo *slots, int group_id, case QXL_DRAW_WHITENESS: red->u.whiteness = qxl->u.whiteness; break; + default: + red_error("unknown type"); + break; }; } @@ -139,6 +156,9 @@ void red_get_compat_drawable(RedMemSlotInfo *slots, int group_id, case QXL_DRAW_FILL: red_get_fill_ptr(slots, group_id, &red->u.fill, &qxl->u.fill); break; + case QXL_DRAW_OPAQUE: + red_get_opaque_ptr(slots, group_id, &red->u.opaque, &qxl->u.opaque); + break; case QXL_DRAW_INVERS: red->u.invers = qxl->u.invers; break; @@ -159,6 +179,9 @@ void red_get_compat_drawable(RedMemSlotInfo *slots, int group_id, case QXL_DRAW_WHITENESS: red->u.whiteness = qxl->u.whiteness; break; + default: + red_error("unknown type"); + break; }; } diff --git a/server/red_worker.c b/server/red_worker.c index a375a204..e253c508 100644 --- a/server/red_worker.c +++ b/server/red_worker.c @@ -7734,7 +7734,7 @@ static void red_lossy_send_qxl_draw_opaque(RedWorker *worker, BitmapData src_bitmap_data; BitmapData brush_bitmap_data; - rop = drawable->u.opaque.rop_decriptor; + rop = drawable->u.opaque.rop_descriptor; src_allowed_lossy = !((rop & SPICE_ROPD_OP_OR) || (rop & SPICE_ROPD_OP_AND) || (rop & SPICE_ROPD_OP_XOR)); diff --git a/spice.proto b/spice.proto index f2a1903c..38493a4c 100644 --- a/spice.proto +++ b/spice.proto @@ -662,7 +662,7 @@ channel DisplayChannel : BaseChannel { Image *src_bitmap; Rect src_area; Brush brush; - ropd rop_decriptor; + ropd rop_descriptor; image_scale_mode scale_mode; QMask mask @outvar(mask); } data; diff --git a/spice1.proto b/spice1.proto index 90a2c30c..a233ffc1 100644 --- a/spice1.proto +++ b/spice1.proto @@ -611,7 +611,7 @@ channel DisplayChannel : BaseChannel { Image *src_bitmap; Rect src_area; Brush brush; - ropd rop_decriptor; + ropd rop_descriptor; image_scale_mode scale_mode; QMask mask @outvar(mask); } data; -- cgit