You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
qemu/ui
Juraj Marcin 0310d594d9 ui/vnc: Update display update interval when VM state changes to RUNNING
If a virtual machine is paused for an extended period time, for example,
due to an incoming migration, there are also no changes on the screen.
VNC in such case increases the display update interval by
VNC_REFRESH_INTERVAL_INC (50 ms). The update interval can then grow up
to VNC_REFRESH_INTERVAL_MAX (3000 ms).

When the machine resumes, it can then take up to 3 seconds for the first
display update. Furthermore, the update interval is then halved with
each display update with changes on the screen. If there are moving
elements on the screen, such as a video, this can be perceived as
freezing and stuttering for few seconds before the movement is smooth
again.

This patch resolves this issue, by adding a listener to VM state changes
and changing the update interval when the VM state changes to RUNNING.
The update_displaychangelistener() function updates the internal timer,
and the display is refreshed immediately if the timer is expired.

Signed-off-by: Juraj Marcin <jmarcin@redhat.com>
Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Link: https://lore.kernel.org/r/20250521151616.3951178-1-jmarcin@redhat.com
Signed-off-by: Peter Xu <peterx@redhat.com>
5 days ago
..
icons
shader
clipboard.c ui/clipboard: delay clipboard update when not running 1 month ago
cocoa.m ui & main loop: Redesign of system-specific main thread event handling 6 months ago
console-gl.c
console-priv.h ui/curses: Do not use console_select() 1 year ago
console-vc-stubs.c ui/curses: Do not use console_select() 1 year ago
console-vc.c qom: Have class_init() take a const data argument 2 months ago
console.c qom: Have class_init() take a const data argument 2 months ago
curses.c include: Rename sysemu/ -> system/ 6 months ago
curses_keys.h
cursor.c ui/cursor: remove cursor_get_mono_image 9 months ago
cursor_hidden.xpm
cursor_left_ptr.xpm
dbus-chardev.c qom: Have class_init() take a const data argument 2 months ago
dbus-clipboard.c include: Rename sysemu/ -> system/ 6 months ago
dbus-console.c ui/dbus: on win32, allow ANONYMOUS with p2p 5 months ago
dbus-display1.xml ui/dbus: change dbus ScanoutDMABUF interface 2 months ago
dbus-error.c
dbus-listener.c ui/dbus: change dbus ScanoutDMABUF interface 2 months ago
dbus-module.c
dbus.c qom: Make InterfaceInfo[] uses const 2 months ago
dbus.h
dmabuf.c ui/dmabuf: extend QemuDmaBuf to support multi-plane 2 months ago
egl-context.c qapi/ui: Drop temporary 'prefix' 10 months ago
egl-headless.c qapi/ui: Drop temporary 'prefix' 10 months ago
egl-helpers.c ui/gtk-egl: Render guest content with padding in fixed-scale mode 1 month ago
gtk-clipboard.c ui/gtk: warn if setting the clipboard failed 1 month ago
gtk-egl.c ui/gtk-egl: Render guest content with padding in fixed-scale mode 1 month ago
gtk-gl-area.c ui/gtk-gl-area: Render guest content with padding in fixed-scale mode 1 month ago
gtk.c ui/gtk: Consider scaling when propagating ui info 1 month ago
input-barrier.c qom: Make InterfaceInfo[] uses const 2 months ago
input-barrier.h
input-keymap.c
input-legacy.c ui/input-legacy.c: remove unused legacy qemu_add_kbd_event_handler() function 8 months ago
input-linux.c qom: Make InterfaceInfo[] uses const 2 months ago
input.c include: Rename sysemu/ -> system/ 6 months ago
kbd-state.c ui/vnc: Do not use console_select() 1 year ago
keymaps.c
keymaps.h
meson.build meson: remove unnecessary dependencies from specific_ss 2 months ago
qemu-pixman.c ui/vnc: take account of client byte order in pixman format 1 month ago
qemu-x509.h
qemu.desktop
sdl2-2d.c ui+display: rename is_placeholder() -> surface_is_placeholder() 1 year ago
sdl2-gl.c ui/gtk-egl: Render guest content with padding in fixed-scale mode 1 month ago
sdl2-input.c ui/sdl2: release all modifiers 10 months ago
sdl2.c ui/sdl: Consider scaling in mouse event handling 1 month ago
shader.c
spice-app.c qom: Have class_init() take a const data argument 2 months ago
spice-core.c include: Rename sysemu/ -> system/ 6 months ago
spice-display.c ui/spice: support multi plane dmabuf scanout 2 months ago
spice-input.c
spice-module.c
trace-events ui/dbus: add trace for can_share_map 9 months ago
trace.h
udmabuf.c
ui-hmp-cmds.c qapi: Move include/qapi/qmp/ to include/qobject/ 5 months ago
ui-qmp-cmds.c
util.c
vdagent.c ui/vdagent: remove migration blocker 1 month ago
vgafont.h
vnc-auth-sasl.c ui: validate NUL byte padding in SASL client data more strictly 8 months ago
vnc-auth-sasl.h
vnc-auth-vencrypt.c
vnc-auth-vencrypt.h
vnc-clipboard.c
vnc-enc-hextile-template.h
vnc-enc-hextile.c
vnc-enc-tight.c ui/vnc: fix tight palette pixel encoding for 8/16-bpp formats 1 month ago
vnc-enc-tight.h
vnc-enc-zlib.c
vnc-enc-zrle.c ui/vnc.c: replace big endian flag with byte order value 1 month ago
vnc-enc-zrle.c.inc
vnc-enc-zrle.h
vnc-enc-zywrle-template.c
vnc-enc-zywrle.h
vnc-jobs.c ui/vnc.c: replace big endian flag with byte order value 1 month ago
vnc-jobs.h
vnc-palette.c
vnc-palette.h
vnc-stubs.c
vnc-ws.c
vnc-ws.h
vnc.c ui/vnc: Update display update interval when VM state changes to RUNNING 5 days ago
vnc.h ui/vnc: Update display update interval when VM state changes to RUNNING 5 days ago
vnc_keysym.h
win32-kbd-hook.c include: Rename sysemu/ -> system/ 6 months ago
x_keymap.c
x_keymap.h