Commit Graph

32551 Commits

Author SHA1 Message Date
CrossVR 59e9267e3d DriverDetails: Disable depth_clamp_control on AMD official drivers 2025-07-29 08:42:22 +09:00
Jordan Woyak 4e0d41627e HW/EXI_DeviceEthernet: Make interrupt state atomic. 2025-07-28 18:30:46 -05:00
Joshua Vandaële ee68efeee8
Config: Change default value for Dual Core from enabled to disabled
Dual Core is primarily known as one of the first troubleshooting steps when emulation or NetPlay misbehave.

I believe(?) the original intent with having it on by default was likely to support users with weaker machines. However, I believe it would be a lot more reasonable for users to manually enable dual core if they really need the performance boost, rather than it is for them to have come ask us in support channel why their cleanly-installed Dolphin is not emulating their games properly.

Instead, this creates a fragile first impression where a clean install of Dolphin is already set up in a way that leads to inexplicable crashes, subtle timing bugs, and NetPlay desyncs.

Note: This changes only applies to the Desktop application, since mobile devices *do* really need the performance boost.
2025-07-27 19:07:08 +02:00
JosJuice 9f32562e36 PPCSymbolDB: Don't return non-const pointers
For thread safety, we shouldn't return any pointers or references that
can be used to mutate the state of the PPCSymbolDB. This should be the
final part of making PPCSymbolDB thread safe unless I've missed
something.
2025-07-27 17:03:57 +02:00
JosJuice fef77a5f20 PPCSymbolDB: Add missing locking
9395238 added locking in some PPCSymbolDB functions that access member
variables, but far from all. To ensure thread safety, this commit adds
the missing locking.
2025-07-27 16:26:47 +02:00
JosJuice 803e6b017b PPCSymbolDB: Reduce lock contention in LoadMap/LoadMapOnBoot
By building the map in a local variable and then swapping it with the
member variable, we avoid the need to hold a lock while building the
map.
2025-07-27 16:26:47 +02:00
JosJuice 59d126d215 PPCSymbolDB: Rename m_write_lock to m_mutex
This mutex needs to be locked both when reading and writing, not just
when writing.
2025-07-27 16:26:46 +02:00
JosJuice d62e21e7b6 PPCSymbolDB: Wait for locking to succeed
9395238 added a mutex to PPCSymbolDB, and made functions return with an
"empty" result if called while the mutex is locked. This new behavior
has the potential to affect not only less important call sites like the
symbol printing mentioned in a comment, but also the JIT deciding if it
should HLE a function.

A later commit in this pull request decreases the amount of lock
contention, reducing the performance impact of this commit.
2025-07-27 16:26:46 +02:00
Martino Fontana e2ecafcaf3 GameSettings: Minor approved cheats update 2025-07-27 11:22:28 +02:00
JosJuice c3be049571 Android: Don't let RetroAchievements override onPause
When Android sends Dolphin to the background, emulation *must* pause,
otherwise emulation continues running and continues outputting audio to
the user. RetroAchievements mustn't be allowed to override it.
2025-07-26 19:59:08 +02:00
JosJuice 0fa15342ec Boot: Fix RetroAchievements for GameCube games launched with IPL
The SetDisc function calls AchievementManager::LoadGame with the game's
volume. Calling AchievementManager::LoadGame again afterwards with
nullptr prevents RetroAchievements from working.
2025-07-26 18:08:19 +02:00
Jordan Woyak 57b145990d
Merge pull request #13446 from JosJuice/breakpoints-delayed-update
PowerPC: Add RAII handling for breakpoint updates
2025-07-25 23:26:25 -05:00
Jordan Woyak dcb289be8f InputCommon/ControllerEmu: Fix saving of Wii Remote "Attach MotionPlus" setting. 2025-07-24 18:44:42 -05:00
Admiral H. Curtiss 64d4c4020c
Merge pull request #13822 from jordan-woyak/libusb-init-error
LibusbUtils: Change libusb_init failure from an ASSERT_MSG to an ERROR_LOG_FMT
2025-07-25 00:20:34 +02:00
Dentomologist e2a8e7da48 GameConfigWidget: Unify tooltips
Use ToolTipWidget::SetDescription insead of QWidget::setTooltip to put
the description in the BalloonTip with the title, instead of having the
description be in a separate standard tooltip.
2025-07-24 12:03:57 -07:00
Jordan Woyak 7871b24b59 LibusbUtils: Change libusb_init failure from an ASSERT_MSG to an ERROR_LOG_FMT. 2025-07-23 21:16:04 -05:00
Jordan Woyak 95ad2d804d RealtekFirmwareLoader: Automatically download missing firmware from gitlab.com. 2025-07-23 19:58:25 -05:00
Jordan Woyak bfef65a9d1 BTReal: Implement Realtek Bluetooth firmware loading.
Logic and structures are largely taken from Linux source:
drivers/bluetooth/btusb.c
drivers/bluetooth/btrtl.c
drivers/bluetooth/btrtl.h
2025-07-23 19:58:25 -05:00
Jordan Woyak 0e90b85bab LibUSBBluetoothAdapter: Add SendBlockingCommand function. 2025-07-23 19:58:25 -05:00
Jordan Woyak 5336c23329 Core: Move HCICommandPayload struct template from BTReal to LibUSBBluetoothAdapter header. 2025-07-23 19:58:25 -05:00
Jordan Woyak 2b541361c6 Common: Move AsU8Span utility function from BTReal to Common/BitUtils. 2025-07-23 19:58:25 -05:00
JMC47 45ba6ed6b1
Merge pull request #13770 from JoshuaVandaele/usbutils
USBUtils: Refactor USB device handling
2025-07-23 20:57:17 -04:00
Jordan Woyak ff0560574e AudioCommon/Mixer: Skip sample processing when NullSoundStream is being used. 2025-07-23 17:53:21 -05:00
JosJuice f4a86931a4
Merge pull request #13818 from Amphitryon0/show-code-default
DolphinQt: Stop re-enabling Code widget when toggling debug mode
2025-07-23 18:13:33 +02:00
Jules Blok 69f331e989
Merge pull request #13100 from CrossVR/unrestricted-depth-range
Vulkan: Add support for unrestricted depth range.
2025-07-23 19:25:09 +09:00
Joshua Vandaële 4ae195ee60
USBUtils: Refactor USB device handling 2025-07-23 03:26:25 +02:00
Amphitryon 8e84943e37 DolphinQt: Stop re-enabling Code widget when toggling debug mode
It is useful enough for the Code widget to be enabled the first time
debugging is enabled, but it should not be re-enabled every time the
setting is toggled off and then back on. This also ensures that the
interface is consistent if debugging is enabled without using the
checkbox.
2025-07-21 22:46:55 -05:00
Tilka 79a3af2e6e
Merge pull request #13805 from SuperSamus/vulkan-present-sempahore-reuse-fix
Vulkan: Fix present semaphores reuse
2025-07-22 03:03:04 +01:00
JMC47 c6de692d01
Merge pull request #13784 from jordan-woyak/btreal-restore-keys-on-hci-reset
BTReal: Always restore link keys on HCI reset.
2025-07-21 21:00:20 -04:00
Martino Fontana b80e178403 Vulkan: Fix present semaphores reuse
Fixes validation errors.
See https://docs.vulkan.org/guide/latest/swapchain_semaphore_reuse.html
2025-07-21 16:02:53 +02:00
CrossVR 0ace5f5d3d Vulkan: Add support for unrestricted depth range. 2025-07-21 14:07:26 +09:00
Jordan Woyak c39c8277b7
Merge pull request #13674 from JosJuice/android-visualize-input
Android: Show input indicators in controller settings
2025-07-20 17:46:47 -05:00
Tilka dccd8709d8
Merge pull request #13803 from JoshuaVandaele/msgmerge-sort
Translation: Remove deprecated --sorted-output/-s option
2025-07-20 17:40:02 +01:00
Admiral H. Curtiss 68713e08b4
Common: Move GetDeviceProperty() into its own header
Otherwise we include Windows headers in the entire codebase through CommonFuncs.h
2025-07-19 21:24:51 +02:00
Tillmann Karras 6a55a1bf68 WII_IPC: fix homebrew that uses the disc drive
Dolphin never emulated the AHBPROT register before, but the default
value when reading from unimplemented MMIO registers used to be -1,
which happened to match what AHBPROT reads as when all restrictions are
disabled. In 6f25e20c6a I changed the
default to 0 to match observed hardware behavior in the memory range of
the command processor. This broke libogc's DI_Init() which checks
AHBPROT for full hardware access (presumably to ensure that bypassing
IPC for Video DVDs will work).
2025-07-19 16:42:15 +01:00
TryTwo 3bd110a210 Darkmode qtoolbuttons and checked state.
Generic qtoolbuttons can be much smaller than qpushbuttons.
2025-07-18 22:46:15 -07:00
JMC47 b2b2808d01
Merge pull request #13812 from Dentomologist/memoryviewwidget_fix_updates_at_end_of_address_space
MemoryViewWidget: Fix updates at end of address space
2025-07-19 00:42:34 -04:00
Dentomologist c29b3e098d MemoryWidget: Fix splitter state restoration
Fix a copy-paste error causing MemoryWidget's splitter to load the wrong
state data when creating the MemoryWidget.

For me this caused the side panel to be scrunched up every time I
started Dolphin, but the exact effects probably depend on the state of
your MemoryWidget and CodeWidget.
2025-07-17 14:40:14 -07:00
Dentomologist 43ab79ae23 MemoryViewWidget: Fix updates at end of address space
Fix two bugs that occurred when viewing a memory range starting shortly
before 0xffffffff.

Bug 1: When there was at least one visible memory address at or after
0x0 none of the values would be displayed even when some of the
addresses were valid. This happened because the loop condition in
GetValues immediately returned false since m_address_range.first >
m_address_range.second, causing m_values to be empty. This in turn led
every address to be considered INVALID_MEMORY in UpdateColumns.

Bug 2: When m_address_range.second was equal to 0xffffffff GetValues
would enter an infinite loop. This happened because address would
overflow to 0 after printing the last value in the table, causing the
loop condition address <= m_address_range.second to be true forever.
2025-07-17 13:45:08 -07:00
JMC47 b6be5ee5d3
Merge pull request #13801 from jordan-woyak/usb-add-device-dialog-adjust-size
USBDeviceAddToWhitelistDialog: Use adjustSize for a better default dialog size.
2025-07-16 20:30:36 -04:00
JMC47 9e05063929
Merge pull request #13793 from jordan-woyak/libusb-unicode-descriptor
LibusbUtils: Add GetStringDescriptor function.
2025-07-16 20:30:12 -04:00
JMC47 295ae819f5
Merge pull request #13792 from Tilka/wii_banners
WiiSaveBanner: fall back to $userdir/Load/WiiBanners
2025-07-16 20:29:46 -04:00
JMC47 9f076d4707
Merge pull request #13783 from jordan-woyak/schedule-event-from-thread-fix
CoreTiming: Fix unsafe usage of m_globals.global_timer in ScheduleEvent from non-CPU thread.
2025-07-16 20:29:18 -04:00
Jordan Woyak d3336d1129
Merge pull request #13808 from LillyJadeKatrin/retroachievements-submodule
Update rcheevos submodule to latest version
2025-07-16 18:01:59 -05:00
Joshua Vandaële 4a520c62a0
Translation: Remove deprecated --sorted-output/-s option
See https://lists.nongnu.org/archive/html/info-gnu/2024-12/msg00000.html
2025-07-16 23:54:29 +02:00
JMC47 c2bace5967
Merge pull request #13798 from TryTwo/PR_CodeWidget_NoUpdate
CodeWidget: Add button that locks the view's address
2025-07-16 14:32:21 -04:00
LillyJadeKatrin 79230c38f1 Update rcheevos submodule to latest version 2025-07-16 00:03:20 -04:00
TryTwo d53e766d65 CodeWidget: Add button that prevents automatic updates to the address, such as navigating to the PC on pause. 2025-07-15 12:23:47 -07:00
JosJuice 5674afa63d
Merge pull request #13804 from jordan-woyak/add-device-shorter-placeholder-text
USBDeviceAddToWhitelistDialog: Remove examples from VID/PID entry placeholder text.
2025-07-15 18:44:21 +02:00
JosJuice 2e26c03378
Merge pull request #13802 from Dentomologist/cexiagp_dont_create_save_file_if_path_is_empty
CEXIAgp: Don't create save file if path is empty
2025-07-15 18:32:39 +02:00
Dentomologist 8a28b95480 IOFile: Require trivially copyable types
Require ReadArray and WriteArray to be called with a trivially copyable
type.

ReadArray and WriteArray call std::fread and std::fwrite respectively.
These functions trigger undefined behavior when the objects are not
trivially copyable, so this adds that requirement to the callers.
2025-07-14 11:55:24 -07:00
Jordan Woyak 9e57447fd3 USBDeviceAddToWhitelistDialog: Limit VID/PID entry to 4 characters. 2025-07-12 16:58:46 -05:00
Jordan Woyak 2bbd1fcf6b USBDeviceAddToWhitelistDialog: Remove examples from VID/PID entry placeholder text. 2025-07-12 16:54:44 -05:00
Jordan Woyak 633fd5df70
Merge pull request #13775 from jordan-woyak/sdl-gamepad-rename
InputCommon: Rename SDL input backend GameController to Gamepad.
2025-07-12 16:50:04 -05:00
Dentomologist 30bd7e18f0 CEXIAgp: Don't create save file if path is empty
Fix creation of a ".sav" file in the current working directory on
emulation shutdown when a slot is set to "Advance Game Port" and the
"GBA Cartridge Path" is empty.

Fixes https://bugs.dolphin-emu.org/issues/12975.
2025-07-12 13:07:44 -07:00
Joshua Vandaële 06882bd2dc
Fix various warnings 2025-07-12 12:47:30 +02:00
Jordan Woyak 3f314c81e9 USBDeviceAddToWhitelistDialog: Use adjustSize for a better default dialog size. 2025-07-12 05:13:47 -05:00
ITotalJustice 8d2a15be3f AudioCommon/Mixer: make large array in Mixer::MixerFifo::Enqueue() static so that it's not created on the stack. 2025-07-11 01:01:03 +01:00
Dentomologist 72ea7a2128 VideoBackendBase: Remove redundant unique_ptr reset
Remove redundant reset of g_presenter in ShutdownShared, which is
already reset earlier in the function.
2025-07-09 14:12:06 -07:00
Sintendo f2392e4048 Avoid map/set double lookups
Fix some common anti-patterns with these data structures.

- You can dereference the iterator returned by `find` to access the
  underlying value directly, without an extra `operator[]`/`at`.
- Rather than checking for an element before insertion/deletion, you can
  just do the operation and if needed check the return value to
  determine if the insertion/deletion succeeded.
2025-07-08 06:53:42 +02:00
Jordan Woyak d55012f8d0
Merge pull request #13726 from hoogmin/cpp23_ranges_patch
Common: Replace Contains and ContainsSubrange with C++23 std::ranges equivalents
2025-07-07 21:05:28 -05:00
Jordan Woyak c37882de77
Merge pull request #13753 from JoshuaVandaele/netplay-hoverblur
ClickBlurLabel: Create a label which is blurred until it is clicked
2025-07-07 20:07:11 -05:00
Jordan Woyak 13784f842e LibusbUtils: Add GetStringDescriptor function to return unicode strings and replace our libusb_get_string_descriptor_ascii calls. 2025-07-06 19:41:14 -05:00
Tillmann Karras fe6fd2279c WiiSaveBanner: fall back to $userdir/Load/WiiBanners
Unlike custom banners which work as an override, this mechanism works as
a fallback. The use case is if you have games you don't really play but
want to keep around for testing purposes without filling up your NAND
with lots of saves. For ease of use, the directory structure is the same
but only title/$title_hi/$title_lo/data/banner.bin files are
relevant.
2025-07-04 23:15:50 +01:00
Jordan Woyak a5e85caf0a
Merge pull request #13736 from jordan-woyak/main-config-gfx
DolphinQt: Move graphics config to main Settings window.
2025-07-03 01:31:01 -05:00
Admiral H. Curtiss a84fa387de
Merge pull request #13785 from Dentomologist/memorywidget_fix_hex_input_validation_errors
MemoryWidget: Fix hex input validation errors
2025-07-01 22:54:37 +02:00
Admiral H. Curtiss 74eeeebfde
Merge pull request #13788 from jordan-woyak/post-proc-config-window-adjust-size
DolphinQt: Adjust PostProcessingConfigWindow size on creation.
2025-07-01 22:51:30 +02:00
Jordan Woyak 4126b4e904 DolphinQt: Adjust PostProcessingConfigWindow size on creation. 2025-07-01 15:26:13 -05:00
JMC47 2871fe08c9
Merge pull request #13782 from noahpistilli/wii_no_pad
IOS/KD: Pad Wii Numbers to 16 digits
2025-07-01 14:52:41 -04:00
Dentomologist 0093ed1ac8 MemoryWidget: Fix "Hex Byte String" validation failures
Fix the input string failing to validate when the "Hex Byte
String" input type is selected and either the user adds a 0x prefix or
the "Hex" box is checked (or both).

The latter failure was particularly troublesome because when "Hex Byte
String" is selected the "Hex" checkbox is disabled. Users would have to
switch to a data type that enabled the box, toggle it, then switch back
to "Hex Byte String" to fix it.

Fix these errors by not adding a prefix when the "Hex" box is checked,
and removing the "0x" prefix from the user's input if present.
2025-06-30 11:34:20 -07:00
Jordan Woyak 8b2d569932 BTReal: Always restore link keys on HCI reset. 2025-06-30 04:07:45 -05:00
Dentomologist 8f4a0b0e77 MemoryWidget: Allow 0x prefix when Hex box is checked.
Fix validation failing when the user has checked the Hex box and also
includes a "0x" or "-0x" prefix in their input.

Previously an extra "0x" would be inserted, causing the user's input of
"0x13" to become "0x0x13" which would then fail to validate.
2025-06-30 00:12:48 -07:00
Jordan Woyak c597c70316 CoreTiming: Fix unsafe usage of m_globals.global_timer in ScheduleEvent from non-CPU thread. 2025-06-29 20:55:43 -05:00
JMC47 9a0d4501f8
Merge pull request #13751 from jordan-woyak/btreal-improvements
Bluetooth Passthrough Improvements
2025-06-29 18:00:02 -04:00
JMC47 626315d50a
Merge pull request #13750 from TryTwo/PR_Symbol_Loading
PPCSymbols: Restructure loading on boot and add a mutex to prevent crashes.
2025-06-29 15:44:52 -04:00
Jordan Woyak 936887838a BTReal: Don't falsely increase a controller's ACL packet number buffer size. WARN_LOG if the size is smaller than that of the original BT module. 2025-06-28 18:54:21 -05:00
Jordan Woyak 7fe4a6e4f3 LibUSBBluetoothAdapter: Change the request type of our generated HCI commands from LIBUSB_RECIPIENT_INTERFACE to LIBUSB_RECIPIENT_DEVICE.
This changes the value from 0x21 to 0x20 which now matches the value that Wii software generates.
2025-06-28 18:54:21 -05:00
Jordan Woyak 25583658d2 State: Increase STATE_VERSION. 2025-06-28 18:54:21 -05:00
Jordan Woyak 0e25979449 BTReal: Attempt to configure HCI_SERVICE_TYPE_GUARANTEED on all connections for improved performance with certain adapters. 2025-06-28 18:54:21 -05:00
Jordan Woyak 350ec54779 BTReal: Improvements:
Separate LibUSB logic into LibUSBBluetoothAdapter class.
Submit transfers on thread with proper timing.
Throttle before ACL input for reduced input latency.
Immediately send IPC replies for outgoing data.
Continuously submit libusb transfers to fill HCI/ACL input queues.
Simplify endpoint handling and state saving.
Other cleanups.
2025-06-28 18:54:16 -05:00
Jordan Woyak 541dbdfead IOS: Move DoStateForMessage from BTEmu to BTBase. 2025-06-28 18:45:52 -05:00
Jordan Woyak b3e349b4df
Merge pull request #13772 from rastshawn/use-btdevice-selection
BTReal: bugfix - BT passthrough uses selected device rather than first compatible device in list
2025-06-28 18:45:05 -05:00
Noah Pistilli f8e22f448d IOS/KD: Pad Wii Numbers to 16 digits 2025-06-28 19:22:14 -04:00
Dentomologist c613d3ca10 ControllerInterface: Fix Windows deadlock
Remove the redundant s_populate_mutex and only use
ControllerInterface::m_devices_population_mutex instead to prevent a
deadlock caused by locking them in opposite orders.

The device population functions in the win32 InputBackend previously
locked s_populate_mutex first before calling various functions that
locked m_devices_population_mutex. This normally worked but
ControllerInterface::RefreshDevices locks m_devices_population_mutex
first and then calls HandleWindowChange which then locked
s_populate_mutex, potentially causing the deadlock.

Fix this by using PlatformPopulateDevices to lock
m_devices_population_mutex before running the code that was previously
protected by s_populate_mutex. The functions in question lock
m_devices_population_mutex anyway, so this shouldn't meaningfully
increase contention on the lock.

Reproduction steps:

* Let Dolphin finish startup.
* In Win32.cpp::OnDevicesChanged set a breakpoint on the call to
  PlatformPopulateDevices. When the breakpoint is triggered the function
  will have locked s_populate_mutex, but since PlatformPopulateDevices
  won't have run yet m_devices_population_mutex will still be unlocked.
* Unplug a device from your computer.
* Wait for the breakpoint to trigger. (At this point you can plug the
  device back in).
* Freeze the ntdll.dll!TppWorkerThread() that triggered the breakpoint.
* Resume Dolphin and start a game.
* Core::EmuThread will call ControllerInterface::ChangeWindow which
  calls RefreshDevices. It locks m_devices_population_mutex, then calls
  InputBackend::HandleWindowChange, which tries to lock
  s_populate_mutex.
* Unfreeze ntdll.dll!TppWorkerThread().

At this point EmuThread and TppWorkerThread are deadlocked. The UI is
still responsive since the Host thread is unaffected, but trying to stop
the game or close Dolphin normally will fail since EmuThread is unable
to stop.
2025-06-28 14:00:27 -07:00
Jordan Woyak 60156f4f94 VideoCommon: Fix "Force Nearest" texture filter setting. 2025-06-28 15:52:27 -05:00
Jordan Woyak 3a32013740
Merge pull request #13773 from JosJuice/i18n-2025-06-22
i18n: Add comments
2025-06-28 15:13:03 -05:00
JosJuice bc1d8ffcbb i18n: Add comments 2025-06-28 21:41:44 +02:00
Jordan Woyak 4af2e27821 DolphinQt: Fix Windows dark theme when using external stylesheets. 2025-06-25 21:53:04 -05:00
TryTwo 9395238159 PPCSymbolDB: Add a mutex to prevent m_functions from being accessed by two different threads on boot.
On boot should be the only time this happens.
2025-06-25 12:11:46 -07:00
TryTwo fe121e4c6e PPCSymbolDB: Move loading map on boot logic from boot.cpp into PPCSymbolDB, as it will be needing a mutex.
Cleanup loading code and reduce amount of signals.

On boot. allow previously loaded map to be kept, if its filename matches. Useful for restarting a game with a large symbol map.
2025-06-25 12:01:16 -07:00
Jordan Woyak 609d91156a InputCommon: Rename SDL input backend GameController to Gamepad. 2025-06-25 00:23:48 -05:00
Joshua Vandaële 8f0ef62a71
ClickBlurLabel: Create a label which is blurred until it is clicked
This is particularly useful for people who stream their desktop and don't want to accidentally leak their IP or room.
2025-06-25 04:08:04 +02:00
JMC47 43aa7e9b96
Merge pull request #13694 from jordan-woyak/sdl3
Update to SDL3
2025-06-24 18:59:48 -04:00
JMC47 43c156084b
Merge pull request #13759 from jordan-woyak/calibrate-autocomplete
DolphinQt: Make Calibration autocomplete when data is "sensible" and stick is returned to neutral position.
2025-06-24 18:22:48 -04:00
Shawn Rast 71fa08813a BT passthrough uses selected device rather than first alphabetical compatible device 2025-06-24 15:39:46 -05:00
JMC47 e9b57393a6
Merge pull request #13766 from JosJuice/powerpc-missing-updates
PowerPC: Add missing SDRUpdated/MSRUpdated calls
2025-06-24 16:36:49 -04:00
JMC47 97febd9477
Merge pull request #13763 from Dentomologist/mainwindow_show_hardcore_mode_error_for_recording_playback
MainWindow: Show hardcore mode error for recording playback
2025-06-24 16:35:56 -04:00
JMC47 0946814711
Merge pull request #13761 from Dentomologist/qt_use_nonautodismissiblemenu_in_more_places
Qt: Use NonAutodismissibleMenu in more places
2025-06-24 16:35:40 -04:00
JMC47 3627cfb7b1
Merge pull request #13758 from Dentomologist/threadwidget_fix_line_edit_margins
ThreadWidget: Fix line edit margins
2025-06-24 16:35:12 -04:00
Tillmann Karras 59d2611a94 VideoCommon: remove unused struct fields 2025-06-24 19:38:45 +01:00