Revision 0e2487bd hw/qxl-render.c
b/hw/qxl-render.c | ||
---|---|---|
28 | 28 |
int len, i; |
29 | 29 |
|
30 | 30 |
src += (qxl->guest_primary.surface.height - rect->top - 1) * |
31 |
qxl->guest_primary.stride; |
|
32 |
dst += rect->top * qxl->guest_primary.stride; |
|
31 |
qxl->guest_primary.abs_stride;
|
|
32 |
dst += rect->top * qxl->guest_primary.abs_stride;
|
|
33 | 33 |
src += rect->left * qxl->guest_primary.bytes_pp; |
34 | 34 |
dst += rect->left * qxl->guest_primary.bytes_pp; |
35 | 35 |
len = (rect->right - rect->left) * qxl->guest_primary.bytes_pp; |
36 | 36 |
|
37 | 37 |
for (i = rect->top; i < rect->bottom; i++) { |
38 | 38 |
memcpy(dst, src, len); |
39 |
dst += qxl->guest_primary.stride; |
|
40 |
src -= qxl->guest_primary.stride; |
|
39 |
dst += qxl->guest_primary.abs_stride;
|
|
40 |
src -= qxl->guest_primary.abs_stride;
|
|
41 | 41 |
} |
42 | 42 |
} |
43 | 43 |
|
... | ... | |
45 | 45 |
{ |
46 | 46 |
QXLSurfaceCreate *sc = &qxl->guest_primary.surface; |
47 | 47 |
|
48 |
qxl->guest_primary.stride = sc->stride; |
|
48 |
qxl->guest_primary.qxl_stride = sc->stride; |
|
49 |
qxl->guest_primary.abs_stride = abs(sc->stride); |
|
49 | 50 |
qxl->guest_primary.resized++; |
50 | 51 |
switch (sc->format) { |
51 | 52 |
case SPICE_SURFACE_FMT_16_555: |
... | ... | |
87 | 88 |
qemu_free_displaysurface(vga->ds); |
88 | 89 |
|
89 | 90 |
qxl->guest_primary.data = memory_region_get_ram_ptr(&qxl->vga.vram); |
90 |
if (qxl->guest_primary.stride < 0) { |
|
91 |
if (qxl->guest_primary.qxl_stride < 0) {
|
|
91 | 92 |
/* spice surface is upside down -> need extra buffer to flip */ |
92 |
qxl->guest_primary.stride = -qxl->guest_primary.stride;
|
|
93 |
qxl->guest_primary.flipped = g_malloc(qxl->guest_primary.surface.width *
|
|
94 |
qxl->guest_primary.stride);
|
|
93 |
qxl->guest_primary.flipped =
|
|
94 |
g_malloc(qxl->guest_primary.surface.width *
|
|
95 |
qxl->guest_primary.abs_stride);
|
|
95 | 96 |
ptr = qxl->guest_primary.flipped; |
96 | 97 |
} else { |
97 | 98 |
ptr = qxl->guest_primary.data; |
... | ... | |
100 | 101 |
__FUNCTION__, |
101 | 102 |
qxl->guest_primary.surface.width, |
102 | 103 |
qxl->guest_primary.surface.height, |
103 |
qxl->guest_primary.stride, |
|
104 |
qxl->guest_primary.qxl_stride,
|
|
104 | 105 |
qxl->guest_primary.bytes_pp, |
105 | 106 |
qxl->guest_primary.bits_pp, |
106 | 107 |
qxl->guest_primary.flipped ? "yes" : "no"); |
... | ... | |
108 | 109 |
qemu_create_displaysurface_from(qxl->guest_primary.surface.width, |
109 | 110 |
qxl->guest_primary.surface.height, |
110 | 111 |
qxl->guest_primary.bits_pp, |
111 |
qxl->guest_primary.stride, |
|
112 |
qxl->guest_primary.abs_stride,
|
|
112 | 113 |
ptr); |
113 | 114 |
dpy_resize(vga->ds); |
114 | 115 |
} |
Also available in: Unified diff