summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2010-06-24 14:37:08 +0200
committerGerd Hoffmann <kraxel@redhat.com>2010-06-29 12:30:20 +0200
commit4fb61b9aa5c092db1f8fcbd51f7967ccfda364ac (patch)
tree703003311e9314fe6f7e30ad0ac2db432fb3954d
parente7ec85a08fab5be2488ae12fa5a99f96daaeb897 (diff)
downloadspice-4fb61b9aa5c092db1f8fcbd51f7967ccfda364ac.tar.gz
spice-4fb61b9aa5c092db1f8fcbd51f7967ccfda364ac.tar.xz
spice-4fb61b9aa5c092db1f8fcbd51f7967ccfda364ac.zip
qxl abi: parse QXLPoint & friends.
-rw-r--r--server/red_parse_qxl.c24
-rw-r--r--server/red_parse_qxl.h4
2 files changed, 21 insertions, 7 deletions
diff --git a/server/red_parse_qxl.c b/server/red_parse_qxl.c
index 91d4aa0d..b5362f44 100644
--- a/server/red_parse_qxl.c
+++ b/server/red_parse_qxl.c
@@ -20,6 +20,18 @@
#include "red_memslots.h"
#include "red_parse_qxl.h"
+static void red_get_point_ptr(SpicePoint *red, QXLPoint *qxl)
+{
+ red->x = qxl->x;
+ red->y = qxl->y;
+}
+
+static void red_get_point16_ptr(SpicePoint16 *red, QXLPoint16 *qxl)
+{
+ red->x = qxl->x;
+ red->y = qxl->y;
+}
+
static void red_get_brush_ptr(RedMemSlotInfo *slots, int group_id,
SpiceBrush *red, QXLBrush *qxl)
{
@@ -30,7 +42,7 @@ static void red_get_brush_ptr(RedMemSlotInfo *slots, int group_id,
break;
case SPICE_BRUSH_TYPE_PATTERN:
red->u.pattern.pat = qxl->u.pattern.pat;
- red->u.pattern.pos = qxl->u.pattern.pos;
+ red_get_point_ptr(&red->u.pattern.pos, &qxl->u.pattern.pos);
break;
}
}
@@ -39,7 +51,7 @@ static void red_get_qmask_ptr(RedMemSlotInfo *slots, int group_id,
SpiceQMask *red, QXLQMask *qxl)
{
red->flags = qxl->flags;
- red->pos = qxl->pos;
+ red_get_point_ptr(&red->pos, &qxl->pos);
red->bitmap = qxl->bitmap;
}
@@ -209,7 +221,7 @@ void red_get_drawable(RedMemSlotInfo *slots, int group_id,
red_get_copy_ptr(slots, group_id, &red->u.copy, &qxl->u.copy);
break;
case QXL_COPY_BITS:
- red->u.copy_bits = qxl->u.copy_bits;
+ red_get_point_ptr(&red->u.copy_bits.src_pos, &qxl->u.copy_bits.src_pos);
break;
case QXL_DRAW_FILL:
red_get_fill_ptr(slots, group_id, &red->u.fill, &qxl->u.fill);
@@ -273,7 +285,7 @@ void red_get_compat_drawable(RedMemSlotInfo *slots, int group_id,
red_get_copy_ptr(slots, group_id, &red->u.copy, &qxl->u.copy);
break;
case QXL_COPY_BITS:
- red->u.copy_bits = qxl->u.copy_bits;
+ red_get_point_ptr(&red->u.copy_bits.src_pos, &qxl->u.copy_bits.src_pos);
break;
case QXL_DRAW_FILL:
red_get_fill_ptr(slots, group_id, &red->u.fill, &qxl->u.fill);
@@ -391,12 +403,12 @@ void red_get_cursor_cmd(RedMemSlotInfo *slots, int group_id,
red->type = qxl->type;
switch (red->type) {
case QXL_CURSOR_SET:
- red->u.set.position = qxl->u.set.position;
+ red_get_point16_ptr(&red->u.set.position, &qxl->u.set.position);
red->u.set.visible = qxl->u.set.visible;
red->u.set.shape = qxl->u.set.shape;
break;
case QXL_CURSOR_MOVE:
- red->u.position = qxl->u.position;
+ red_get_point16_ptr(&red->u.position, &qxl->u.position);
break;
case QXL_CURSOR_TRAIL:
red->u.trail.length = qxl->u.trail.length;
diff --git a/server/red_parse_qxl.h b/server/red_parse_qxl.h
index 94a880e5..b96a393b 100644
--- a/server/red_parse_qxl.h
+++ b/server/red_parse_qxl.h
@@ -42,7 +42,9 @@ typedef struct SPICE_ATTR_PACKED RedDrawable {
SpiceCopy copy;
SpiceTransparent transparent;
SpiceAlphaBlnd alpha_blend;
- QXLCopyBits copy_bits;
+ struct {
+ SpicePoint src_pos;
+ } copy_bits;
SpiceBlend blend;
SpiceRop3 rop3;
SpiceStroke stroke;