diff options
-rw-r--r-- | src/qxl_surface.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/qxl_surface.c b/src/qxl_surface.c index c5cb40e..72fa3e5 100644 --- a/src/qxl_surface.c +++ b/src/qxl_surface.c @@ -1400,8 +1400,16 @@ qxl_surface_prepare_composite (int op, } static QXLImage * -image_from_picture (qxl_screen_t *qxl, PicturePtr picture) +image_from_picture (qxl_screen_t *qxl, PicturePtr picture, qxl_surface_t *surface) { + struct QXLImage *image = qxl_allocnf (qxl, sizeof *image); + + image->descriptor.id = 0; + image->descriptor.type = SPICE_IMAGE_TYPE_SURFACE; + image->descriptor.width = 0; + image->descriptor.height = 0; + image->surface_image.surface_id = surface->id; + /* FIXME */ return NULL; } @@ -1437,7 +1445,9 @@ qxl_surface_composite (qxl_surface_t *dest, { qxl_screen_t *qxl = dest->cache->qxl; PicturePtr src = dest->u.composite.src_picture; + qxl_surface_t *qsrc = dest->u.composite.src; PicturePtr mask = dest->u.composite.mask_picture; + qxl_surface_t *qmask = dest->u.composite.mask; int op = dest->u.composite.op; struct QXLDrawable *drawable; QXLComposite *composite; @@ -1456,14 +1466,14 @@ qxl_surface_composite (qxl_surface_t *dest, composite->flags |= (op & 0xff); - composite->src = image_from_picture (qxl, src); + composite->src = image_from_picture (qxl, src, qsrc); composite->flags |= (src->filter << 8); composite->flags |= (src->repeat << 14); composite->src_transform = get_transform (qxl, src->transform); if (mask) { - composite->mask = image_from_picture (qxl, mask); + composite->mask = image_from_picture (qxl, mask, qmask); composite->flags |= (mask->filter << 11); composite->flags |= (mask->repeat << 16); composite->flags |= (mask->componentAlpha << 18); |