ui/console: Add placeholder flag to message surface

The surfaces created with former qemu_create_message_surface
did not display the content from the guest and always contained
simple messages describing the reason.

A display backend may want to hide the window showing such a
surface. This change renames the function to
qemu_create_placeholder_surface, and adds "placeholder" flag; the
display can check the flag to decide to do anything special like
hiding the window.

Signed-off-by: Akihiko Odaki <akihiko.odaki@gmail.com>
Message-Id: <20210225101316.83940-1-akihiko.odaki@gmail.com>
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
This commit is contained in:
Akihiko Odaki 2021-02-25 19:13:14 +09:00 committed by Gerd Hoffmann
parent 4313739a57
commit b5a087b071
5 changed files with 20 additions and 13 deletions

View file

@ -1436,8 +1436,8 @@ DisplaySurface *qemu_create_displaysurface_pixman(pixman_image_t *image)
return surface;
}
DisplaySurface *qemu_create_message_surface(int w, int h,
const char *msg)
DisplaySurface *qemu_create_placeholder_surface(int w, int h,
const char *msg)
{
DisplaySurface *surface = qemu_create_displaysurface(w, h);
pixman_color_t bg = color_table_rgb[0][QEMU_COLOR_BLACK];
@ -1454,6 +1454,7 @@ DisplaySurface *qemu_create_message_surface(int w, int h,
x+i, y, FONT_WIDTH, FONT_HEIGHT);
qemu_pixman_image_unref(glyph);
}
surface->flags |= QEMU_PLACEHOLDER_FLAG;
return surface;
}
@ -1550,7 +1551,7 @@ void register_displaychangelistener(DisplayChangeListener *dcl)
dcl->ops->dpy_gfx_switch(dcl, con->surface);
} else {
if (!dummy) {
dummy = qemu_create_message_surface(640, 480, nodev);
dummy = qemu_create_placeholder_surface(640, 480, nodev);
}
dcl->ops->dpy_gfx_switch(dcl, dummy);
}
@ -1998,7 +1999,7 @@ QemuConsole *graphic_console_init(DeviceState *dev, uint32_t head,
&error_abort);
}
surface = qemu_create_message_surface(width, height, noinit);
surface = qemu_create_placeholder_surface(width, height, noinit);
dpy_gfx_replace_surface(s, surface);
return s;
}
@ -2027,7 +2028,7 @@ void graphic_console_close(QemuConsole *con)
if (con->gl) {
dpy_gl_scanout_disable(con);
}
surface = qemu_create_message_surface(width, height, unplugged);
surface = qemu_create_placeholder_surface(width, height, unplugged);
dpy_gfx_replace_surface(con, surface);
}