diff options
author | Gerd Hoffmann | 2013-02-28 10:48:02 +0100 |
---|---|---|
committer | Gerd Hoffmann | 2013-03-18 10:21:58 +0100 |
commit | da229ef3b3c5709b01d62e7a6e213b31bca33d16 (patch) | |
tree | d65f6542018ca23e0a752f34b50f91857103a4e2 /hw/xenfb.c | |
parent | sdl: drop dead code (diff) | |
download | qemu-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.c | 8 |
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; } |