UI: fixes for 8.2-rc1
-----BEGIN PGP SIGNATURE----- iQJQBAABCAA6FiEEh6m9kz+HxgbSdvYt2ujhCXWWnOUFAmVciOwcHG1hcmNhbmRy ZS5sdXJlYXVAcmVkaGF0LmNvbQAKCRDa6OEJdZac5VtiD/oDEfDSwTxkAD6TMFoY n2XlzrElTAwYl0lgzzWHrdfoR2vtplIz3gK7u7MCa+rjUMowZbV3EBrMYDMoMWVU NkuUeSZsHYuXjaKt/nCqnmxklmq0tGN9NOwdOD1V++u257qbkUSl2w7/K0xEohAs NAeF3wWoCArQyjLD4K6LVsMe9IMrOP1VyGYrKBKQ91xpsuagkrjJt8RnO9MwodNs 8a65HRKq7HPXvMqZF7v4HgZ2pa1vrWZv4zVTraUBHaW9XpdIoiAd2+WeshjuawhO G6nQFpHVnQb8FBLrg+f5RItH+CjxhGvBa4DZmuGl1Y3s/fXN2N5QpUNIBqhgtE4P fZ+iXIpyE8sqj0TThnusszgBGWKadVjQJ8nVEVTKHzXtIa2mthF2MyY/EgnR4zQa 0H0YiE0SXYvoHxaErkvAfdt75OH0JBhiDcclFb1axFY2dhcgMuM7q7CR5HeO4fRd UEvLb8K7TLPtBGBxH5Z9z+ecxN6jIIqetosbbWFAfuIbd+at64AMh2N/MYZk2Chy 7E6ZGqNb8htOo2R5MitijpTm48vTs0gGjmyq7RHifG/yDHSUrPLrOgDkSC3IKY7y Xc9aK6fqm0l6LTLDbmZhM/znoc/1TErw/T3S4rqky0wvFTpuhP29vwd8WuyQ1ZpS viNCue6q0tScUz179wKEfYfyag== =o08n -----END PGP SIGNATURE----- Merge tag 'ui-pull-request' of https://gitlab.com/marcandre.lureau/qemu into staging UI: fixes for 8.2-rc1 # -----BEGIN PGP SIGNATURE----- # # iQJQBAABCAA6FiEEh6m9kz+HxgbSdvYt2ujhCXWWnOUFAmVciOwcHG1hcmNhbmRy # ZS5sdXJlYXVAcmVkaGF0LmNvbQAKCRDa6OEJdZac5VtiD/oDEfDSwTxkAD6TMFoY # n2XlzrElTAwYl0lgzzWHrdfoR2vtplIz3gK7u7MCa+rjUMowZbV3EBrMYDMoMWVU # NkuUeSZsHYuXjaKt/nCqnmxklmq0tGN9NOwdOD1V++u257qbkUSl2w7/K0xEohAs # NAeF3wWoCArQyjLD4K6LVsMe9IMrOP1VyGYrKBKQ91xpsuagkrjJt8RnO9MwodNs # 8a65HRKq7HPXvMqZF7v4HgZ2pa1vrWZv4zVTraUBHaW9XpdIoiAd2+WeshjuawhO # G6nQFpHVnQb8FBLrg+f5RItH+CjxhGvBa4DZmuGl1Y3s/fXN2N5QpUNIBqhgtE4P # fZ+iXIpyE8sqj0TThnusszgBGWKadVjQJ8nVEVTKHzXtIa2mthF2MyY/EgnR4zQa # 0H0YiE0SXYvoHxaErkvAfdt75OH0JBhiDcclFb1axFY2dhcgMuM7q7CR5HeO4fRd # UEvLb8K7TLPtBGBxH5Z9z+ecxN6jIIqetosbbWFAfuIbd+at64AMh2N/MYZk2Chy # 7E6ZGqNb8htOo2R5MitijpTm48vTs0gGjmyq7RHifG/yDHSUrPLrOgDkSC3IKY7y # Xc9aK6fqm0l6LTLDbmZhM/znoc/1TErw/T3S4rqky0wvFTpuhP29vwd8WuyQ1ZpS # viNCue6q0tScUz179wKEfYfyag== # =o08n # -----END PGP SIGNATURE----- # gpg: Signature made Tue 21 Nov 2023 05:39:40 EST # gpg: using RSA key 87A9BD933F87C606D276F62DDAE8E10975969CE5 # gpg: issuer "marcandre.lureau@redhat.com" # gpg: Good signature from "Marc-André Lureau <marcandre.lureau@redhat.com>" [full] # gpg: aka "Marc-André Lureau <marcandre.lureau@gmail.com>" [full] # Primary key fingerprint: 87A9 BD93 3F87 C606 D276 F62D DAE8 E109 7596 9CE5 * tag 'ui-pull-request' of https://gitlab.com/marcandre.lureau/qemu: ui/pixman-minimal.h: fix empty allocation vl: add missing display_remote++ ui/console: fix default VC when there are no display ui: use "vc" chardev for dbus, gtk & spice-app vl: revert behaviour for -display none Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
c14ae763d5
@ -113,6 +113,45 @@ typedef struct pixman_color {
|
||||
uint16_t alpha;
|
||||
} pixman_color_t;
|
||||
|
||||
static inline uint32_t *create_bits(pixman_format_code_t format,
|
||||
int width,
|
||||
int height,
|
||||
int *rowstride_bytes)
|
||||
{
|
||||
int stride = 0;
|
||||
size_t buf_size = 0;
|
||||
int bpp = PIXMAN_FORMAT_BPP(format);
|
||||
|
||||
/*
|
||||
* Calculate the following while checking for overflow truncation:
|
||||
* stride = ((width * bpp + 0x1f) >> 5) * sizeof(uint32_t);
|
||||
*/
|
||||
|
||||
if (unlikely(__builtin_mul_overflow(width, bpp, &stride))) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (unlikely(__builtin_add_overflow(stride, 0x1f, &stride))) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
stride >>= 5;
|
||||
|
||||
stride *= sizeof(uint32_t);
|
||||
|
||||
if (unlikely(__builtin_mul_overflow((size_t) height,
|
||||
(size_t) stride,
|
||||
&buf_size))) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (rowstride_bytes) {
|
||||
*rowstride_bytes = stride;
|
||||
}
|
||||
|
||||
return g_malloc0(buf_size);
|
||||
}
|
||||
|
||||
static inline pixman_image_t *pixman_image_create_bits(pixman_format_code_t format,
|
||||
int width,
|
||||
int height,
|
||||
@ -123,13 +162,18 @@ static inline pixman_image_t *pixman_image_create_bits(pixman_format_code_t form
|
||||
|
||||
i->width = width;
|
||||
i->height = height;
|
||||
i->stride = rowstride_bytes ?: width * DIV_ROUND_UP(PIXMAN_FORMAT_BPP(format), 8);
|
||||
i->format = format;
|
||||
if (bits) {
|
||||
i->data = bits;
|
||||
} else {
|
||||
i->free_me = i->data = g_malloc0(rowstride_bytes * height);
|
||||
i->free_me = i->data =
|
||||
create_bits(format, width, height, &rowstride_bytes);
|
||||
if (width && height) {
|
||||
assert(i->data);
|
||||
}
|
||||
}
|
||||
i->stride = rowstride_bytes ? rowstride_bytes :
|
||||
width * DIV_ROUND_UP(PIXMAN_FORMAT_BPP(format), 8);
|
||||
i->ref_count = 1;
|
||||
|
||||
return i;
|
||||
|
@ -1110,6 +1110,7 @@ static void parse_display(const char *p)
|
||||
*/
|
||||
if (*opts == '=') {
|
||||
vnc_parse(opts + 1);
|
||||
display_remote++;
|
||||
} else {
|
||||
error_report("VNC requires a display argument vnc=<display>");
|
||||
exit(1);
|
||||
@ -1359,6 +1360,7 @@ static void qemu_setup_display(void)
|
||||
dpy.type = DISPLAY_TYPE_NONE;
|
||||
#if defined(CONFIG_VNC)
|
||||
vnc_parse("localhost:0,to=99,id=default");
|
||||
display_remote++;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
@ -1391,7 +1393,7 @@ static void qemu_create_default_devices(void)
|
||||
}
|
||||
}
|
||||
|
||||
if (nographic || (!vc && !is_daemonized() && isatty(STDOUT_FILENO))) {
|
||||
if (nographic) {
|
||||
if (default_parallel) {
|
||||
add_device_config(DEV_PARALLEL, "null");
|
||||
}
|
||||
|
18
ui/console.c
18
ui/console.c
@ -1679,19 +1679,17 @@ void qemu_display_init(DisplayState *ds, DisplayOptions *opts)
|
||||
|
||||
const char *qemu_display_get_vc(DisplayOptions *opts)
|
||||
{
|
||||
assert(opts->type < DISPLAY_TYPE__MAX);
|
||||
if (opts->type == DISPLAY_TYPE_NONE) {
|
||||
return NULL;
|
||||
}
|
||||
assert(dpys[opts->type] != NULL);
|
||||
if (dpys[opts->type]->vc) {
|
||||
return dpys[opts->type]->vc;
|
||||
} else {
|
||||
#ifdef CONFIG_PIXMAN
|
||||
return "vc:80Cx24C";
|
||||
const char *vc = "vc:80Cx24C";
|
||||
#else
|
||||
const char *vc = NULL;
|
||||
#endif
|
||||
|
||||
assert(opts->type < DISPLAY_TYPE__MAX);
|
||||
if (dpys[opts->type] && dpys[opts->type]->vc) {
|
||||
vc = dpys[opts->type]->vc;
|
||||
}
|
||||
return NULL;
|
||||
return vc;
|
||||
}
|
||||
|
||||
void qemu_display_help(void)
|
||||
|
@ -518,6 +518,7 @@ static QemuDisplay qemu_display_dbus = {
|
||||
.type = DISPLAY_TYPE_DBUS,
|
||||
.early_init = early_dbus_init,
|
||||
.init = dbus_init,
|
||||
.vc = "vc",
|
||||
};
|
||||
|
||||
static void register_dbus(void)
|
||||
|
1
ui/gtk.c
1
ui/gtk.c
@ -2534,6 +2534,7 @@ static QemuDisplay qemu_display_gtk = {
|
||||
.type = DISPLAY_TYPE_GTK,
|
||||
.early_init = early_gtk_display_init,
|
||||
.init = gtk_display_init,
|
||||
.vc = "vc",
|
||||
};
|
||||
|
||||
static void register_gtk(void)
|
||||
|
@ -220,6 +220,7 @@ static QemuDisplay qemu_display_spice_app = {
|
||||
.type = DISPLAY_TYPE_SPICE_APP,
|
||||
.early_init = spice_app_display_early_init,
|
||||
.init = spice_app_display_init,
|
||||
.vc = "vc",
|
||||
};
|
||||
|
||||
static void register_spice_app(void)
|
||||
|
Loading…
Reference in New Issue
Block a user