fixes for 6.2: microvm, ui, modules.
-----BEGIN PGP SIGNATURE----- iQIzBAABCgAdFiEEoDKM/7k6F6eZAf59TLbY7tPocTgFAmGbj5kACgkQTLbY7tPo cTiJrw//afZiIXG9/7nSkQety3L+IG5kNR+TpEGspo7alP4swIbdpndkpWL9+ipz Z+hLFekkDPQ56Ml8Q3qyBrDOVMZYxeHOrLeNcNtR2cxFLeXkrCjjY5apS5aDV9Yu ZI5WkGP57Hy2syUempFJEQsMNVjvXAe1Uwe692SZh4EPOW4qXoHlqui5iL7AfxjK XCThoY2MRRzdEuAO8gMNHUrB5URsDP85DMIGPtG3grM+CezxFeoj3WW+BYSuY0mn JO8BciZPSteh9bkjyYx70z2k159ue/99pjM81uRKOBFHv8KFOaUMfr8RmC1L+3Dx krc31misEDwvxumOEBp8SGTR5ZgcRdeW1iAzlQR7fXOCcSbEPuRuxmE3Bhc+1/qg 8of2KWqayVFfIap6cSGE6A4lWl3RkFsOsqC7DZiwoYtDIt7nVT3BtpFTKvqeVIs9 YRiCN3YQSxXhi2oxPnezNFcltBX2hZMdHnKS9Bkhfpmyxc2peEkWB18F+lTlEj2/ KdUwCLGDonZ/LTh1sfU0SSqdTvw6Uw5ZUHThbftmPCEi8rf5RtF0G+/cvsypmJsv fch62M0J2urG0Oj0FygrTO4XIUR/PX/GU3Pt6MimeduL6t/hz3jUlCLrmriCnPMq BbDS/fOmCN3PjZtNtMZu4l/WYxaPeH/9BQJ/GahpTg57bUBoY4I= =QR2E -----END PGP SIGNATURE----- Merge tag 'fixes-20211122-pull-request' of git://git.kraxel.org/qemu into staging fixes for 6.2: microvm, ui, modules. # gpg: Signature made Mon 22 Nov 2021 01:39:53 PM CET # gpg: using RSA key A0328CFFB93A17A79901FE7D4CB6D8EED3E87138 # gpg: Good signature from "Gerd Hoffmann (work) <kraxel@redhat.com>" [full] # gpg: aka "Gerd Hoffmann <gerd@kraxel.org>" [full] # gpg: aka "Gerd Hoffmann (private) <kraxel@gmail.com>" [full] * tag 'fixes-20211122-pull-request' of git://git.kraxel.org/qemu: microvm: check g_file_set_contents() return value microvm: add missing g_free() call hw/i386/microvm: Reduce annoying debug message in dt_setup_microvm() migration: fix dump-vmstate with modules ui/vnc-clipboard: fix adding notifier twice ui/gtk: graphic_hw_gl_flushed after closing dmabuf->fence_fd ui: fix incorrect pointer position on highdpi with gtk ui: fix incorrect scaling on highdpi with gtk/opengl Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
5d1f437fb4
@ -143,6 +143,8 @@ static void dt_add_pcie(MicrovmMachineState *mms)
|
||||
nr_pcie_buses = PCIE_ECAM_SIZE / PCIE_MMCFG_SIZE_MIN;
|
||||
qemu_fdt_setprop_cells(mms->fdt, nodename, "bus-range", 0,
|
||||
nr_pcie_buses - 1);
|
||||
|
||||
g_free(nodename);
|
||||
}
|
||||
|
||||
static void dt_add_ioapic(MicrovmMachineState *mms, SysBusDevice *dev)
|
||||
@ -327,12 +329,17 @@ void dt_setup_microvm(MicrovmMachineState *mms)
|
||||
dt_setup_sys_bus(mms);
|
||||
|
||||
/* add to fw_cfg */
|
||||
fprintf(stderr, "%s: add etc/fdt to fw_cfg\n", __func__);
|
||||
if (debug) {
|
||||
fprintf(stderr, "%s: add etc/fdt to fw_cfg\n", __func__);
|
||||
}
|
||||
fw_cfg_add_file(x86ms->fw_cfg, "etc/fdt", mms->fdt, size);
|
||||
|
||||
if (debug) {
|
||||
fprintf(stderr, "%s: writing microvm.fdt\n", __func__);
|
||||
g_file_set_contents("microvm.fdt", mms->fdt, size, NULL);
|
||||
if (!g_file_set_contents("microvm.fdt", mms->fdt, size, NULL)) {
|
||||
fprintf(stderr, "%s: writing microvm.fdt failed\n", __func__);
|
||||
return;
|
||||
}
|
||||
int ret = system("dtc -I dtb -O dts microvm.fdt");
|
||||
if (ret != 0) {
|
||||
fprintf(stderr, "%s: oops, dtc not installed?\n", __func__);
|
||||
|
@ -3766,6 +3766,7 @@ void qemu_init(int argc, char **argv, char **envp)
|
||||
|
||||
if (vmstate_dump_file) {
|
||||
/* dump and exit */
|
||||
module_load_qom_all();
|
||||
dump_vmstate_json_to_file(vmstate_dump_file);
|
||||
exit(0);
|
||||
}
|
||||
|
@ -41,15 +41,16 @@ void gd_gl_area_draw(VirtualConsole *vc)
|
||||
#ifdef CONFIG_GBM
|
||||
QemuDmaBuf *dmabuf = vc->gfx.guest_fb.dmabuf;
|
||||
#endif
|
||||
int ww, wh, y1, y2;
|
||||
int ww, wh, ws, y1, y2;
|
||||
|
||||
if (!vc->gfx.gls) {
|
||||
return;
|
||||
}
|
||||
|
||||
gtk_gl_area_make_current(GTK_GL_AREA(vc->gfx.drawing_area));
|
||||
ww = gtk_widget_get_allocated_width(vc->gfx.drawing_area);
|
||||
wh = gtk_widget_get_allocated_height(vc->gfx.drawing_area);
|
||||
ws = gdk_window_get_scale_factor(gtk_widget_get_window(vc->gfx.drawing_area));
|
||||
ww = gtk_widget_get_allocated_width(vc->gfx.drawing_area) * ws;
|
||||
wh = gtk_widget_get_allocated_height(vc->gfx.drawing_area) * ws;
|
||||
|
||||
if (vc->gfx.scanout_mode) {
|
||||
if (!vc->gfx.guest_fb.framebuffer) {
|
||||
|
17
ui/gtk.c
17
ui/gtk.c
@ -589,11 +589,11 @@ void gd_hw_gl_flushed(void *vcon)
|
||||
VirtualConsole *vc = vcon;
|
||||
QemuDmaBuf *dmabuf = vc->gfx.guest_fb.dmabuf;
|
||||
|
||||
graphic_hw_gl_block(vc->gfx.dcl.con, false);
|
||||
graphic_hw_gl_flushed(vc->gfx.dcl.con);
|
||||
qemu_set_fd_handler(dmabuf->fence_fd, NULL, NULL, NULL);
|
||||
close(dmabuf->fence_fd);
|
||||
dmabuf->fence_fd = -1;
|
||||
graphic_hw_gl_block(vc->gfx.dcl.con, false);
|
||||
graphic_hw_gl_flushed(vc->gfx.dcl.con);
|
||||
}
|
||||
|
||||
/** DisplayState Callbacks (opengl version) **/
|
||||
@ -838,10 +838,11 @@ static gboolean gd_motion_event(GtkWidget *widget, GdkEventMotion *motion,
|
||||
{
|
||||
VirtualConsole *vc = opaque;
|
||||
GtkDisplayState *s = vc->s;
|
||||
GdkWindow *window;
|
||||
int x, y;
|
||||
int mx, my;
|
||||
int fbh, fbw;
|
||||
int ww, wh;
|
||||
int ww, wh, ws;
|
||||
|
||||
if (!vc->gfx.ds) {
|
||||
return TRUE;
|
||||
@ -850,8 +851,10 @@ static gboolean gd_motion_event(GtkWidget *widget, GdkEventMotion *motion,
|
||||
fbw = surface_width(vc->gfx.ds) * vc->gfx.scale_x;
|
||||
fbh = surface_height(vc->gfx.ds) * vc->gfx.scale_y;
|
||||
|
||||
ww = gdk_window_get_width(gtk_widget_get_window(vc->gfx.drawing_area));
|
||||
wh = gdk_window_get_height(gtk_widget_get_window(vc->gfx.drawing_area));
|
||||
window = gtk_widget_get_window(vc->gfx.drawing_area);
|
||||
ww = gdk_window_get_width(window);
|
||||
wh = gdk_window_get_height(window);
|
||||
ws = gdk_window_get_scale_factor(window);
|
||||
|
||||
mx = my = 0;
|
||||
if (ww > fbw) {
|
||||
@ -861,8 +864,8 @@ static gboolean gd_motion_event(GtkWidget *widget, GdkEventMotion *motion,
|
||||
my = (wh - fbh) / 2;
|
||||
}
|
||||
|
||||
x = (motion->x - mx) / vc->gfx.scale_x;
|
||||
y = (motion->y - my) / vc->gfx.scale_y;
|
||||
x = (motion->x - mx) / vc->gfx.scale_x * ws;
|
||||
y = (motion->y - my) / vc->gfx.scale_y * ws;
|
||||
|
||||
if (qemu_input_is_absolute()) {
|
||||
if (x < 0 || y < 0 ||
|
||||
|
@ -316,8 +316,10 @@ void vnc_server_cut_text_caps(VncState *vs)
|
||||
caps[1] = 0;
|
||||
vnc_clipboard_send(vs, 2, caps);
|
||||
|
||||
vs->cbpeer.name = "vnc";
|
||||
vs->cbpeer.update.notify = vnc_clipboard_notify;
|
||||
vs->cbpeer.request = vnc_clipboard_request;
|
||||
qemu_clipboard_peer_register(&vs->cbpeer);
|
||||
if (!vs->cbpeer.update.notify) {
|
||||
vs->cbpeer.name = "vnc";
|
||||
vs->cbpeer.update.notify = vnc_clipboard_notify;
|
||||
vs->cbpeer.request = vnc_clipboard_request;
|
||||
qemu_clipboard_peer_register(&vs->cbpeer);
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user