2641 Commits

Author SHA1 Message Date
Matt Borgerson 67cc79e663 apu: Add new DSP56300 emulator with JIT execution engine
- Fixes a few bugs in the existing C interpreter
- Adds a state abstraction layer to switch between engines at runtime
  and maintain snapshot compatibility
2026-06-11 19:27:21 -07:00
oltolm 3623bac7ed build/win32: fix mkvenv wheel path and C++ header include order
Fix Windows build issues in both Python env setup and UI C++ headers.

- Use a plain path for pip --find-links in python/scripts/mkvenv.py instead of a file:// URL, which is unreliable on Windows paths.
- Move qemu/osdep.h outside extern "C" blocks in ui/xemu-snapshots.h and ui/xui/common.hh so C++ compilation sees expected declarations/types without C-linkage wrapping side effects.
2026-06-08 23:30:24 -07:00
mborgerson e00c1511d1 ui: Account for pixel density and display scaling 2026-05-19 17:51:49 -07:00
Matt Borgerson ebc2ddf786 ui: Set SDL_HINT_VIDEO_DRIVER to wayland,x11 2026-05-19 17:48:31 -07:00
Erik Abair da38b262c7 ui: Force NVIDIA present method to native
Setting the NVIDIA driver Vulkan/OpenGL present method to
"Prefer layerd on DXGI Swapchain" with vsync enabled within xemu causes
framerate to be ~halved. This change overrides the driver setting to force
the legacy/native value to be used.

Resolves one identified issue with #2790
2026-04-21 13:20:51 -07:00
Erik Abair 1425a8c39b ui: Do not pass missing paths to SDL_ShowOpenFileDialog
Passing two levels of invalid paths to `SDL_ShowOpenFileDialog` on Windows
causes a crash.  E.g., given a directory `d:\foo` that exists, passing
`D:\foo\bar\baz` will trigger the crash.

In this case, the `FileDialogCallbackWrapper` callback is invoked twice,
leading to a double-free.

Fixes #2785
2026-03-11 12:02:54 -07:00
Matt Borgerson a11d0c83a4 apu: Add frame timing debug 2026-02-16 00:39:57 -07:00
oltolm 0e0089d6da ui: Destroy context before destroying main window 2026-02-01 10:14:58 -07:00
Matt Borgerson d96a472116 ui: Exit from main thread and finalize display 2026-01-31 13:17:57 -07:00
Matt Borgerson 3b7a83d64b ui: Handle main window refresh independently
- Cleanup various dead code and minor restructure for clarity
- Separate host and guest updates
- Fix freezes while moving or resizing the main window on Windows by
  registering event watch callback
2026-01-31 13:17:57 -07:00
oltolm 9ea91d8eba xemu-snapshots.c: Check bs_ro refcnt before unref 2026-01-26 12:38:23 -07:00
oltolm b64c19a0ed ui: Fix size of m_config_info_text passed to InputTextMultiline 2026-01-22 20:16:26 -07:00
Matt Borgerson 3f79ec8422 meson: Drop noc library 2026-01-21 18:40:07 -07:00
Matt Borgerson cc4329da8d ui: Migrate xemu_get_os_platform to SDL_GetPlatform 2026-01-21 18:40:07 -07:00
Matt Borgerson 214f1fed0f ui: Migrate file selection dialogs to SDL3's FileDialog API 2026-01-21 18:40:07 -07:00
Matt Borgerson 4fafe755cb ui: Migrate custom precise delay to SDL_DelayPrecise 2026-01-21 18:40:07 -07:00
Matt Borgerson 18aba177e2 ui: Set app metadata via SDL3 2026-01-21 18:40:07 -07:00
Matt Borgerson 6c29b043a2 ui: Cleanup sdl2 prefixes and other dead code 2026-01-21 18:40:07 -07:00
Matt Borgerson 0ec4eca39b ui: Drop _WIN32 guard around cpuid.h include 2026-01-21 18:40:07 -07:00
Matt Borgerson cf88b3e78f ui: Report SDL error on main window creation failure 2026-01-21 18:40:07 -07:00
Matt Borgerson 0ae7ee7647 ui: Migrate to SDL3 2026-01-21 18:40:07 -07:00
Matt Borgerson fba182ab01 ui: Show current/latest version in updater, link to release notes 2026-01-21 17:06:15 -07:00
Matt Borgerson ec7f5e438a ui: Fetch latest release info via GitHub API 2026-01-21 17:06:15 -07:00
Matt Borgerson 24a4218752 ui: Make some helper functions static 2026-01-18 19:08:17 -07:00
Matt Borgerson 704ece9ac6 Merge QEMU v10.2.0 2026-01-18 16:36:55 -07:00
Matt Borgerson 70d95d879f ui: Make 'Exclusive Fullscreen' option configurable 2026-01-17 20:36:44 -07:00
Matt Borgerson b28279ca74 ui: Disable CRT assert dialogs, log to stderr 2026-01-12 01:34:58 -07:00
Matt Borgerson e409f7afd9 ui: Drop xemu branch tracking 2026-01-04 23:38:25 -07:00
antangelo 47b25fb8fb ui: Fix use-after-free when new controller mapping is added
When a new controller mapping is added to the controller mapping array
in the xemu config, the array is reallocated, and any existing pointers
become invalid and must be reset.
2025-12-27 23:34:39 -07:00
Matt Borgerson 289e4db0bd ui: Replace xemu_open_web_browser with SDL_OpenURL 2025-12-27 13:36:44 -07:00
jyetcv 0c2462c5d7 ui: Add display filter configuration 2025-12-26 14:22:28 -07:00
antangelo 7b465bda3f ui: Fix rumble setting migration overwriting controller rumble with default 2025-12-26 12:08:56 -07:00
antangelo aed1fa4ac6 ui: Add controller/keyboard input mapping configuration 2025-12-25 14:54:30 -07:00
oltolm d0478b6154 ui: Support fullscreen toggle via F11 2025-12-23 14:46:51 -07:00
Igor Leonovich 2cf036ec7f ui: Remove legacy macOS-specific shortcut handling
Ctrl/Cmd mapping on macOS is now handled internally by Dear ImGui
2025-12-18 16:53:55 -07:00
Cédric Le Goater 326e620fc0 Fix const qualifier build errors with recent glibc
A recent change in glibc 2.42.9000 [1] changes the return type of
strstr() and other string functions to be 'const char *' when the
input is a 'const char *'.

This breaks the build in various files with errors such as :

  error: initialization discards 'const' qualifier from pointer target type [-Werror=discarded-qualifiers]
    208 |         char *pidstr = strstr(filename, "%");
        |                        ^~~~~~

Fix this by changing the type of the variables that store the result
of these functions to 'const char *'.

[1] https://sourceware.org/git/?p=glibc.git;a=commit;h=cd748a63ab1a7ae846175c532a3daab341c62690

Signed-off-by: Cédric Le Goater <clg@redhat.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Message-ID: <20251209174328.698774-1-clg@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2025-12-09 21:00:15 +01:00
Kolja 7ebabd852a xemu.desktop: Add Keywords 2025-11-27 12:55:20 -07:00
AlanoSong@163.com 4c1646e23f ui/vnc: Fix qemu abort when query vnc info
When there is no display device on qemu machine,
and user only access qemu by remote vnc.
At the same time user input `info vnc` by QMP,
the qemu will abort.

To avoid the abort above, I add display device check,
when query vnc info in qmp_query_vnc_servers().

Reviewed-by: Marc-AndréLureau <marcandre.lureau@redhat.com>
Signed-off-by: Alano Song <AlanoSong@163.com>
[ Marc-André - removed useless Error *err ]
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Message-ID: <20251125131955.7024-1-AlanoSong@163.com>
2025-11-25 18:03:13 +04:00
Marc-André Lureau 4be62d3117 ui/vdagent: fix windows agent regression
Since commit f626116f ("ui/vdagent: factor out clipboard peer
registration"), the QEMU clipboard serial is reset whenever the vdagent
chardev receives the guest caps. This triggers a CHR_EVENT_CLOSED which
is handled by virtio_serial_close() to notify the guest.

The "reconnection logic" is there to reset the agent when a
client (dbus, spice etc) reconnects, or the agent is restarted.
It is required to sync the clipboard serials and to prevent races or
loops due to clipboard managers on both ends (but this is not
implemented by windows vdagent).

The Unix agent has been reconnecting without resending caps, thus
working with this approach.

However, the Windows agent does not seem to have a way to handle
VIRTIO_CONSOLE_PORT_OPEN=0 event and do not receive further data...

Let's not trigger this disconnection/reset logic if the agent does not
support VD_AGENT_CAP_CLIPBOARD_GRAB_SERIAL.

Fixes: f626116f ("ui/vdagent: factor out clipboard peer registration")
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reported-by: Lucas Kornicki <lucas.kornicki@nutanix.com>
Tested-by: Fiona Ebner <f.ebner@proxmox.com>
Reviewed-by: Fiona Ebner <f.ebner@proxmox.com>
Tested-by: Lucas Kornicki <lucas.kornicki@nutanix.com>
2025-11-25 11:08:24 +04:00
Eric Blake ec59a65a4d qio: Provide accessor around QIONetListener->sioc
An upcoming patch needs to pass more than just sioc as the opaque
pointer to an AioContext; but since our AioContext code in general
(and its QIO Channel wrapper code) lacks a notify callback present
with GSource, we do not have the trivial option of just g_malloc'ing a
small struct to hold all that data coupled with a notify of g_free.
Instead, the data pointer must outlive the registered handler; in
fact, having the data pointer have the same lifetime as QIONetListener
is adequate.

But the cleanest way to stick such a helper struct in QIONetListener
will be to rearrange internal struct members.  And that in turn means
that all existing code that currently directly accesses
listener->nsioc and listener->sioc[] should instead go through
accessor functions, to be immune to the upcoming struct layout
changes.  So this patch adds accessor methods qio_net_listener_nsioc()
and qio_net_listener_sioc(), and puts them to use.

While at it, notice that the pattern of grabbing an sioc from the
listener only to turn around can call
qio_channel_socket_get_local_address is common enough to also warrant
the helper of qio_net_listener_get_local_address, and fix a copy-paste
error in the corresponding documentation.

Signed-off-by: Eric Blake <eblake@redhat.com>
Message-ID: <20251113011625.878876-24-eblake@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
2025-11-13 10:54:44 -06:00
Daniel P. Berrangé a5d2bf4a87 crypto: introduce method for reloading TLS creds
This prevents direct access of the class members by the VNC
display code.

Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
2025-11-03 10:45:55 +00:00
Marc-André Lureau 9cba1ce936 audio: move capture API to own header
For modularity/clarity reasons, move the capture API in a specific
header.

The current audio/ header license is MIT.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2025-10-30 22:56:51 +04:00
Marc-André Lureau 1e4ebc895a audio: move audio.h under include/qemu/
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
2025-10-30 22:56:51 +04:00
Marc-André Lureau 2d18978b7f audio/dbus: use a helper function to set the backend dbus server
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2025-10-30 22:56:37 +04:00
Marc-André Lureau 7d75c12ad1 audio: rename AudioState -> AudioBackend
Naming is hard. But in general in QEMU, a host "backend" is the term
used to fullfill the request made by the device or frontend.

AudioBackend will become an abstract base class in a follow-up series.

Currently the frontend is QEMUSoundCard, we are going to drop that next.

Note that "audiodev" is the corresponding QAPI type name (or configuration).

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
2025-10-30 22:56:28 +04:00
Richard Henderson 26a8bf921b Merge tag 'pull-error-2025-10-21' of https://repo.or.cz/qemu/armbru into staging
Error reporting patches for 2025-10-21

# -----BEGIN PGP SIGNATURE-----
#
# iQJGBAABCAAwFiEENUvIs9frKmtoZ05fOHC0AOuRhlMFAmj3VtISHGFybWJydUBy
# ZWRoYXQuY29tAAoJEDhwtADrkYZTQeAP/04zx2+cQd4z5nTW3xEXKk/NOdq0v8bS
# QURIehjdsmf18rqzayITDx5lajy2cHc59quLOmUKxIiP4Ovs6yPI89n9k7plN2rd
# 5uaxnYI7BSMwkWMjUr8Bidy4PhDBwpTAouKx8616n1gd25bVjr9jLcnXBoLiuxZf
# jARC6Qnjj4cZC7VdZpMsKoWoOyGrJ7ZoBeDE6fgnVIsjhk2zj77tTaA0SXhzFe20
# gBO7EZD8CYgiakgW1yyYrxcOcT7agTzW6L0+k93Nh4lLbT8qVz60Vq3PnPuonkBj
# aJ1j8jgQ4zRHlsDLs54R0Xigjj2cDVim6rDJsdqUZQP4Giy2LqBDsDrP9xaljt4x
# alIQJMUEGAYUy4vMhuiqLBwC8sEYvYs7FW9E+O9gk5ieKLq3A74q/i35xs8PIZF0
# 2A3THqRtMe87opNtmhfcXjwHSTewCuYreUjTj8Ih+FofQa4TAofhHZKk01k9NeXT
# xgNNUZxF/Z6j/ukCtgaABCUc/XYvx/AGmsv63Dw1bJnu9FIuq/8t2aNxVwtAlklN
# Mz+KYtuhgAxKxN6Zugy6qQPrMjxf7DJesiE4BbbSJcJb8o43rzkFNiyW/X1YhCan
# 8lyBCQX5eDWb1QWIF1ln5Q7EJf2+ouBeUyZbVGZXoJZCWoXmCl0w8LqLYEeX1k6M
# 4iLy37wX9kwo
# =GZ2A
# -----END PGP SIGNATURE-----
# gpg: Signature made Tue 21 Oct 2025 04:48:02 AM CDT
# gpg:                using RSA key 354BC8B3D7EB2A6B68674E5F3870B400EB918653
# gpg:                issuer "armbru@redhat.com"
# gpg: Good signature from "Markus Armbruster <armbru@redhat.com>" [unknown]
# gpg:                 aka "Markus Armbruster <armbru@pond.sub.org>" [unknown]
# gpg: WARNING: The key's User ID is not certified with a trusted signature!
# gpg:          There is no indication that the signature belongs to the owner.
# Primary key fingerprint: 354B C8B3 D7EB 2A6B 6867  4E5F 3870 B400 EB91 8653

* tag 'pull-error-2025-10-21' of https://repo.or.cz/qemu/armbru:
  ui/pixman: Fix crash in qemu_pixman_shareable_free()

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
2025-10-21 08:59:19 -05:00
Markus Armbruster 1a5319e267 ui/pixman: Fix crash in qemu_pixman_shareable_free()
Reported-by: Bernhard Beschow <shentey@gmail.com>
Fixes: b296b29d34 (ui/pixman: Consistent error handling in qemu_pixman_shareable_free())
Signed-off-by: Markus Armbruster <armbru@redhat.com>
Message-ID: <20251013112102.2396012-1-armbru@redhat.com>
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Tested-by: Bernhard Beschow <shentey@gmail.com>
Reviewed-by: Bernhard Beschow <shentey@gmail.com>
2025-10-21 09:54:48 +02:00
Dongwon Kim 0c6d6d79a5 ui/gtk-gl-area: Remove extra draw call in refresh
This partially reverts commit 77bf310084
which causes some guest display corruption when gtk-gl-area
is used for GTK rendering (e.g. Wayland Compositor) possibly due to
simulataneous accesses on the guest frame buffer by host compositor
and the guest.

Fixes: 77bf310084 ("ui/gtk: Draw guest frame at refresh cycle")
Reported-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Reported-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Alex Bennée <alex.bennee@linaro.org>
Tested-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Dmitry Osipenko <dmitry.osipenko@collabora.com>
Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
Cc: Vivek Kasireddy <vivek.kasireddy@intel.com>
Signed-off-by: Dongwon Kim <dongwon.kim@intel.com>
Message-Id: <20250214170813.2234754-1-dongwon.kim@intel.com>
Message-ID: <20250603110204.838117-12-alex.bennee@linaro.org>
Cc: qemu-stable@nongnu.org
Message-ID: <20251016150357.876415-6-alex.bennee@linaro.org>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
2025-10-20 13:46:28 +01:00
Erik Abair 19f18873d9 ui: Add xiso files to loader menu 2025-10-15 21:17:27 -04:00
Trent Seed 705b5d4759 ui: Add games directory to popup-menu 2025-10-15 21:17:27 -04:00