mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-11 16:00:50 -07:00
console: simplify screendump
Screendumps are alot simpler as we can update non-active QemuConsoles now. So we only need to update the QemuConsole we want write out, then dump the DisplaySurface content into a ppm file. Done. No console switching needed. No special support code in the gfx card emulation needed. Zap it all. Also move ppm_save out of the vga code and next to the qmp_screendump function. For now screen dumping is limited to console #0 (like it used to be), even though it is dead simple to extend it to other consoles. I wanna finish the console cleanup before setting new qapi interfaces into stone. Signed-off-by: Gerd Hoffmann <kraxel@redhat.com> Tested-by: Igor Mitsyanko <i.mitsyanko@gmail.com>
This commit is contained in:
parent
321f048d24
commit
2c62f08ddb
26 changed files with 74 additions and 452 deletions
|
|
@ -1119,31 +1119,6 @@ static void vmsvga_invalidate_display(void *opaque)
|
|||
s->invalidated = 1;
|
||||
}
|
||||
|
||||
/* save the vga display in a PPM image even if no display is
|
||||
available */
|
||||
static void vmsvga_screen_dump(void *opaque, const char *filename, bool cswitch,
|
||||
Error **errp)
|
||||
{
|
||||
struct vmsvga_state_s *s = opaque;
|
||||
DisplaySurface *surface = qemu_console_surface(s->vga.con);
|
||||
|
||||
if (!s->enable) {
|
||||
s->vga.screen_dump(&s->vga, filename, cswitch, errp);
|
||||
return;
|
||||
}
|
||||
|
||||
if (surface_bits_per_pixel(surface) == 32) {
|
||||
DisplaySurface *ds = qemu_create_displaysurface_from(
|
||||
surface_width(surface),
|
||||
surface_height(surface),
|
||||
32,
|
||||
surface_stride(surface),
|
||||
s->vga.vram_ptr, false);
|
||||
ppm_save(filename, ds, errp);
|
||||
g_free(ds);
|
||||
}
|
||||
}
|
||||
|
||||
static void vmsvga_text_update(void *opaque, console_ch_t *chardata)
|
||||
{
|
||||
struct vmsvga_state_s *s = opaque;
|
||||
|
|
@ -1212,7 +1187,6 @@ static void vmsvga_init(struct vmsvga_state_s *s,
|
|||
|
||||
s->vga.con = graphic_console_init(vmsvga_update_display,
|
||||
vmsvga_invalidate_display,
|
||||
vmsvga_screen_dump,
|
||||
vmsvga_text_update, s);
|
||||
|
||||
s->fifo_size = SVGA_FIFO_SIZE;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue