summaryrefslogtreecommitdiffstats
path: root/hw/xenfb.c
diff options
context:
space:
mode:
authorGerd Hoffmann2013-02-28 10:48:02 +0100
committerGerd Hoffmann2013-03-18 10:21:58 +0100
commitda229ef3b3c5709b01d62e7a6e213b31bca33d16 (patch)
treed65f6542018ca23e0a752f34b50f91857103a4e2 /hw/xenfb.c
parentsdl: drop dead code (diff)
downloadqemu-da229ef3b3c5709b01d62e7a6e213b31bca33d16.tar.gz
qemu-da229ef3b3c5709b01d62e7a6e213b31bca33d16.tar.xz
qemu-da229ef3b3c5709b01d62e7a6e213b31bca33d16.zip
console: rework DisplaySurface handling [vga emu side]
Decouple DisplaySurface allocation & deallocation from DisplayState. Replace dpy_gfx_resize + dpy_gfx_setdata with a dpy_gfx_replace_surface function. This handles the graphic hardware emulation. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Diffstat (limited to 'hw/xenfb.c')
-rw-r--r--hw/xenfb.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/hw/xenfb.c b/hw/xenfb.c
index 3462ded619..7779097f50 100644
--- a/hw/xenfb.c
+++ b/hw/xenfb.c
@@ -703,6 +703,7 @@ static void xenfb_send_refresh_period(struct XenFB *xenfb, int period)
static void xenfb_update(void *opaque)
{
struct XenFB *xenfb = opaque;
+ DisplaySurface *surface;
int i;
if (xenfb->c.xendev.be_state != XenbusStateConnected)
@@ -753,21 +754,20 @@ static void xenfb_update(void *opaque)
case 16:
case 32:
/* console.c supported depth -> buffer can be used directly */
- qemu_free_displaysurface(xenfb->c.ds);
- xenfb->c.ds->surface = qemu_create_displaysurface_from
+ surface = qemu_create_displaysurface_from
(xenfb->width, xenfb->height, xenfb->depth,
xenfb->row_stride, xenfb->pixels + xenfb->offset,
false);
break;
default:
/* we must convert stuff */
- qemu_resize_displaysurface(xenfb->c.ds, xenfb->width, xenfb->height);
+ surface = qemu_create_displaysurface(xenfb->width, xenfb->height);
break;
}
+ dpy_gfx_replace_surface(xenfb->c.ds, surface);
xen_be_printf(&xenfb->c.xendev, 1, "update: resizing: %dx%d @ %d bpp%s\n",
xenfb->width, xenfb->height, xenfb->depth,
is_buffer_shared(xenfb->c.ds->surface) ? " (shared)" : "");
- dpy_gfx_resize(xenfb->c.ds);
xenfb->up_fullscreen = 1;
}