mirror of https://github.com/xemu-project/xemu.git
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;
|
uint16_t alpha;
|
||||||
} pixman_color_t;
|
} 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,
|
static inline pixman_image_t *pixman_image_create_bits(pixman_format_code_t format,
|
||||||
int width,
|
int width,
|
||||||
int height,
|
int height,
|
||||||
|
@ -123,13 +162,18 @@ static inline pixman_image_t *pixman_image_create_bits(pixman_format_code_t form
|
||||||
|
|
||||||
i->width = width;
|
i->width = width;
|
||||||
i->height = height;
|
i->height = height;
|
||||||
i->stride = rowstride_bytes ?: width * DIV_ROUND_UP(PIXMAN_FORMAT_BPP(format), 8);
|
|
||||||
i->format = format;
|
i->format = format;
|
||||||
if (bits) {
|
if (bits) {
|
||||||
i->data = bits;
|
i->data = bits;
|
||||||
} else {
|
} 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;
|
i->ref_count = 1;
|
||||||
|
|
||||||
return i;
|
return i;
|
||||||
|
|
|
@ -1110,6 +1110,7 @@ static void parse_display(const char *p)
|
||||||
*/
|
*/
|
||||||
if (*opts == '=') {
|
if (*opts == '=') {
|
||||||
vnc_parse(opts + 1);
|
vnc_parse(opts + 1);
|
||||||
|
display_remote++;
|
||||||
} else {
|
} else {
|
||||||
error_report("VNC requires a display argument vnc=<display>");
|
error_report("VNC requires a display argument vnc=<display>");
|
||||||
exit(1);
|
exit(1);
|
||||||
|
@ -1359,6 +1360,7 @@ static void qemu_setup_display(void)
|
||||||
dpy.type = DISPLAY_TYPE_NONE;
|
dpy.type = DISPLAY_TYPE_NONE;
|
||||||
#if defined(CONFIG_VNC)
|
#if defined(CONFIG_VNC)
|
||||||
vnc_parse("localhost:0,to=99,id=default");
|
vnc_parse("localhost:0,to=99,id=default");
|
||||||
|
display_remote++;
|
||||||
#endif
|
#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) {
|
if (default_parallel) {
|
||||||
add_device_config(DEV_PARALLEL, "null");
|
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)
|
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
|
#ifdef CONFIG_PIXMAN
|
||||||
return "vc:80Cx24C";
|
const char *vc = "vc:80Cx24C";
|
||||||
|
#else
|
||||||
|
const char *vc = NULL;
|
||||||
#endif
|
#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)
|
void qemu_display_help(void)
|
||||||
|
|
|
@ -518,6 +518,7 @@ static QemuDisplay qemu_display_dbus = {
|
||||||
.type = DISPLAY_TYPE_DBUS,
|
.type = DISPLAY_TYPE_DBUS,
|
||||||
.early_init = early_dbus_init,
|
.early_init = early_dbus_init,
|
||||||
.init = dbus_init,
|
.init = dbus_init,
|
||||||
|
.vc = "vc",
|
||||||
};
|
};
|
||||||
|
|
||||||
static void register_dbus(void)
|
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,
|
.type = DISPLAY_TYPE_GTK,
|
||||||
.early_init = early_gtk_display_init,
|
.early_init = early_gtk_display_init,
|
||||||
.init = gtk_display_init,
|
.init = gtk_display_init,
|
||||||
|
.vc = "vc",
|
||||||
};
|
};
|
||||||
|
|
||||||
static void register_gtk(void)
|
static void register_gtk(void)
|
||||||
|
|
|
@ -220,6 +220,7 @@ static QemuDisplay qemu_display_spice_app = {
|
||||||
.type = DISPLAY_TYPE_SPICE_APP,
|
.type = DISPLAY_TYPE_SPICE_APP,
|
||||||
.early_init = spice_app_display_early_init,
|
.early_init = spice_app_display_early_init,
|
||||||
.init = spice_app_display_init,
|
.init = spice_app_display_init,
|
||||||
|
.vc = "vc",
|
||||||
};
|
};
|
||||||
|
|
||||||
static void register_spice_app(void)
|
static void register_spice_app(void)
|
||||||
|
|
Loading…
Reference in New Issue