diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2010-08-26 22:29:12 +0200 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2010-08-26 22:29:12 +0200 |
commit | ea2f97a81015ecf2792e1906a6c0b156ec86cc5b (patch) | |
tree | 422fda134d5d4626f313326c09a0bf10f5697411 /server/red_parse_qxl.c | |
parent | 96987ebfde951caa7b5a5a64683e9b6385f776ef (diff) | |
download | spice-ea2f97a81015ecf2792e1906a6c0b156ec86cc5b.tar.gz spice-ea2f97a81015ecf2792e1906a6c0b156ec86cc5b.tar.xz spice-ea2f97a81015ecf2792e1906a6c0b156ec86cc5b.zip |
qxl parser: complete QXL_SURFACE_CMD_CREATE parsing
Diffstat (limited to 'server/red_parse_qxl.c')
-rw-r--r-- | server/red_parse_qxl.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/server/red_parse_qxl.c b/server/red_parse_qxl.c index 127141c6..fb46bd8b 100644 --- a/server/red_parse_qxl.c +++ b/server/red_parse_qxl.c @@ -957,6 +957,7 @@ void red_get_surface_cmd(RedMemSlotInfo *slots, int group_id, RedSurfaceCmd *red, QXLPHYSICAL addr) { QXLSurfaceCmd *qxl; + size_t size; qxl = (QXLSurfaceCmd *)get_virt(slots, addr, sizeof(*qxl), group_id); red->release_info = &qxl->release_info; @@ -971,7 +972,9 @@ void red_get_surface_cmd(RedMemSlotInfo *slots, int group_id, red->u.surface_create.width = qxl->u.surface_create.width; red->u.surface_create.height = qxl->u.surface_create.height; red->u.surface_create.stride = qxl->u.surface_create.stride; - red->u.surface_create.data = qxl->u.surface_create.data; + size = red->u.surface_create.height * abs(red->u.surface_create.stride); + red->u.surface_create.data = + (uint8_t*)get_virt(slots, qxl->u.surface_create.data, size, group_id); break; } } |