summaryrefslogtreecommitdiff
path: root/Source/Core/DolphinQt/MainWindow.cpp
AgeCommit message (Collapse)Author
2025-12-11MainWindow: Fix sscanf type/width specifiers for DWORDCraig Carnell
2025-11-25Merge pull request #14066 from Biendeo/masterJosJuice
IOS: Logitech USB Microphone Basic Support
2025-11-25USB: Add emulated Logitech USB MicrophoneBiendeo
Co-authored by: supermilkdude67 <w.f.s.jazzfyre@gmail.com>
2025-11-10Merge pull request #14052 from jordan-woyak/DirectIOFileJordan Woyak
Common and DiscIO: Introduce a thread safe DirectIOFile and make BlobReader implementations use it.
2025-11-09Merge pull request #13956 from jordan-woyak/SA_RESTARTAdmiral H. Curtiss
Main: Add SA_RESTART to sigaction sa_flags.
2025-11-09DiscIO: Make all BlobReader implementations use DirectIOFile to make ↵Jordan Woyak
CopyReader functionality thread safe.
2025-11-03MainWindow: Change save state file filter to use *.s?? patternVampireFlower
2025-10-10Movie Window: Move customization options from Menu Bar to OSD pane, but add ↵TryTwo
options to toggle the window and to open the OSD pane. Add new setting to show/hide the Movie Window.
2025-09-19Main: Add SA_RESTART to signal handler sigaction sa_flags.Jordan Woyak
2025-09-07DolphinQt: Center dialogs on top-level parent window.cristian64
The `QtUtils::AdjustSizeWithinScreen()` function now centers the widget on their parent window after the widget's size is adjusted. This is required in some desktop environments (generally on Linux systems) to ensure that the just-resized widget remains aligned with its parent window. The creation of the **Cheats Manager** dialog is now deferred to first show, as creating it within the main window's constructor prevents the dialog from knowing the real position of its parent window, which is only properly calculated on first show. For the same reasons, the analytics prompt is now shown only when the application is ready (i.e. when the main window has been shown). | Before | After | | ------ | ----- | | <img width="1920" height="1080" alt="[Dolphin Emulator] Misplaced analytics prompt" title="[Dolphin Emulator] Misplaced analytics prompt" src="https://github.com/user-attachments/assets/c3e43b3b-cf79-4398-b531-7de6068c583e" /> | <img width="1920" height="1080" alt="[Dolphin Emulator] Centered analytics prompt" title="[Dolphin Emulator] Centered analytics prompt" src="https://github.com/user-attachments/assets/a10d06d9-7438-4032-b96c-dfcb48826349" /> | | <img width="1920" height="1080" alt="[Dolphin Emulator] Misplaced Settings dialog" title="[Dolphin Emulator] Misplaced Settings dialog" src="https://github.com/user-attachments/assets/f35b10ee-4f07-48d4-86f9-2537ad5ca7ca" /> | <img width="1920" height="1080" alt="[Dolphin Emulator] Centered Settings dialog" title="[Dolphin Emulator] Centered Settings dialog" src="https://github.com/user-attachments/assets/33e37237-77a4-44f6-a0e2-b709f65b672b" /> | | <img width="1920" height="1080" alt="[Dolphin Emulator] Misplaced Cheats Manager dialog" title="[Dolphin Emulator] Misplaced Cheats Manager dialog" src="https://github.com/user-attachments/assets/1fbd3836-5639-4d5a-b57e-e2e21f21c9db" /> | <img width="1920" height="1080" alt="[Dolphin Emulator] Centered Cheats Manager dialog" title="[Dolphin Emulator] Centered Cheats Manager dialog" src="https://github.com/user-attachments/assets/3f2b1b50-de16-49b7-bac4-c444c6cab0bc" /> |
2025-08-17FIFOPlayerWindow: Trigger destructor on Dolphin shutdownDentomologist
Make MainWindow::m_fifo_window a unique_ptr to ensure its destructor is triggered when MainWindow is destroyed. FIFOPlayerWindow doesn't set MainWindow as its parent in order to prevent raising MainWindow when focusing FIFOPlayerWindow. This avoids MainWindow covering up RenderWidget when, e.g., trying to use the object range feature to pinpoint the index of a particular object. As a consequence, unlike most QObjects FIFOPlayerWindow wasn't destroyed when its parent widget was since it didn't have one.
2025-07-03Merge pull request #13736 from jordan-woyak/main-config-gfxJordan Woyak
DolphinQt: Move graphics config to main Settings window.
2025-06-17MainWindow: Show hardcore mode error for recording playbackDentomologist
Show an error message when attempting to play an input recording while RetroAchievements hardcore mode is active, instead of silently doing nothing.
2025-06-14DolphinQt: Move graphics config to main Settings window.Jordan Woyak
2025-06-14Source: Remove redundant lambda parameter listsDr. Dystopia
2025-06-10MainWindow - Avoid excessive emulation state changesLillyJadeKatrin
Updates the Hardcore Changed callback to only signal EmulationStateChanged if the new Hardcore Mode setting is different from the previous one.
2025-06-07DolphinQt: Replace widespread SetQWidgetWindowDecorations calls with an ↵Jordan Woyak
event filter.
2025-06-04DolphinQt: Move "Controllers" to main settings window.Jordan Woyak
2025-05-07IOS/USB: Emulate Wii Speak (OpenAL)Sketch
Credits to @degasus and shuffle2 (godisgovernment): https://github.com/degasus/dolphin/tree/wiispeak
2025-04-25MainWindow: Fix use-after-free during shutdownDentomologist
Remove ConfigChangedCallback in MainWindow's destructor to prevent the callback from accessing the destroyed MainWindow afterward. After MainWindow is destroyed UICommon::Shutdown calls LogManager::Shutdown which ultimately triggers any remaining callbacks. This resulted in calling MainWindow::OnHardcoreChanged, which crashed in debug builds and didn't have any obvious effect in release builds.
2025-04-23Fix debugger disabled bugLillyJadeKatrin
Fixing an oversight: this was causing the debugger to be disabled if achievements were disabled but hardcore mode was still enabled in the .ini. This fix properly checks for hardcore state via AchievementManager which takes both settings into account.
2025-04-21Merge pull request #12949 from LillyJadeKatrin/retroachievements-new-dev-branchJMC47
RetroAchievements - Dev Branch Refactor
2025-04-21Adding support for detecting .bin imagesZopolis4
2025-04-16Added modified achievements confirmationLillyJadeKatrin
Added a line to the close game confirmation dialog to tell the dev if there are unsaved modifications to the achievement assets.
2025-04-13Add RAIntegration event handlerLillyJadeKatrin
Some refactoring done to hardcore toggling so that it's more readily available for the toggle hardcore event.
2025-04-13Load RA_Integration.DLL at init if presentLillyJadeKatrin
2024-11-02Merge pull request #13151 from mitaclaw/core-global-system-6Tilka
MainWindow: Avoid Global System Accessor
2024-10-28Merge pull request #12954 from LillyJadeKatrin/retroachievements-confirmJMC47
Achievements Confirmation Dialogs
2024-10-24MainWindow: Avoid Global System Accessormitaclaw
2024-10-19DolphinQt: JIT Widget Refreshmitaclaw
Fulfilling a certain six-year-old todo.
2024-10-12Merge pull request #13076 from robxnano/dbus-inhibitTilka
Linux: Use D-Bus to inhibit screensaver
2024-10-11Merge pull request #13075 from robxnano/qt-color-schemeTilka
Remove unneeded Win32 code for color scheme
2024-10-04Partially revert "Revert "Audit uses of IsRunning and GetState""JosJuice
This reverts the revert commit bc67fc97c39628c76a4dbca411b0e8a9bfaf726a, except for the changes in BaseConfigLoader.cpp, which caused the bug that made us revert 72cf2bdb87f09deff22e1085de3290126aa4ad05. PR 12917 contains an improved change to BaseConfigLoader.cpp, which can be merged (or rejected) independently. A few changes have also been made based on review comments.
2024-10-03Turn off debug mode if hardcore is active on emulator startLillyJadeKatrin
Found this bug while testing; if I manually edit the config files while Dolphin is closed I was able to get debug and hardcore on at the same time, this resolves that.
2024-09-27linux: Use D-Bus to inhibit screensaverrobxnano
2024-09-27DolphinQt: Remove unneeded Win32 coderobxnano
Dolphin already uses QStyleHints::colorScheme to detect dark mode, so this code is now redundant.
2024-09-20DolphinQt: A Ubiquitous Signal For When Breakpoints Changemitaclaw
There were three distinct mechanisms for signaling breakpoint changes in DolphinQt, and the wiring had room for improvement. The behavior of these signals has been consolidated into the new `Host::PPCBreakpointsChanged` signal, which can be emitted from anywhere in DolphinQt to properly update breakpoints everywhere in DolphinQt. This improves a few things: - For the `CodeViewWidget` and `MemoryViewWidget`, signals no longer need to propagate through the `CodeWidget` and `MemoryWidget` (respectively) to reach their destination (incoming or outgoing). - For the `BreakpointWidget`, by self-triggering from its own signal, it no longer must manually call `Update()` after all of the emission sites. - For the `BranchWatchDialog`, it now has one less thing it must go through the `CodeWidget` for, which is a plus.
2024-08-27MainWindow: Prevent Confirm On Stop dialog from being hiddenDentomologist
Set the Render Window as the parent of the Confirm On Stop confirmation dialog when Keep Window On Top is enabled, ensuring it will always be visible. Previously, when Confirm On Stop and Keep Window On Top were both enabled the Confirm On Stop dialog could be hidden by the render window in the following situations: * Clicking Stop in the Main Window * Clicking the Main Window's close button * Pressing the Stop hotkey while in FullScreen mode This was particularly troublesome because the confirm dialog is modal, preventing the user from moving the render window out of the way if it was obscuring the dialog. Fixes https://bugs.dolphin-emu.org/issues/13247.
2024-07-28i18n: Add comments and improve source stringsJosJuice
Most of these changes are to improve consistency in capitalization.
2024-07-06Add Open Achievements HotkeyLillyJadeKatrin
Adds a hotkey to pause emulation and bring up the Achievements dialog.
2024-07-04Merge pull request #12888 from TryTwo/Fix_Window_TitlebarAdmiral H. Curtiss
MainWindow: Bugfix. Windows Dark mode titlebar not being set.
2024-06-26Revert "Audit uses of IsRunning and GetState"JosJuice
This reverts commit 72cf2bdb87f09deff22e1085de3290126aa4ad05. SYSCONF settings are getting cleared when they shouldn't be. Let's revert the change until I get proper time to figure out why it's broken.
2024-06-23MainWindow: Remove Show() and redistribute its logic to other places.TryTwo
bugfix: SetQWidgetWindowDecorations(this); not called before show() for Windows darkmode titlebars. The actual call to (QWidget) show() needed to come sooner. Show() was originally left alone, but with other checks needing to move with (QWidget) show(), this function became less useful. Show() was originally created to fix the render widget appearing behind the main window, but that appears to work fine in this iteration.
2024-06-21Audit uses of IsRunning and GetStateJosJuice
Some pieces of code are calling IsRunning because there's some particular action that only makes sense when emulation is running, for instance showing the state of the emulated CPU. IsRunning is appropriate to use for this. Then there are pieces of code that are calling IsRunning because there's some particular thing they must avoid doing e.g. when the CPU thread is running or IOS is running. IsRunning isn't quite appropriate for this. Such code should also be checking for the states Starting and Stopping. Keep in mind that: * When the state is Starting, the state can asynchronously change to Running at any time. * When we try to stop the core, the state gets set to Stopping before we take any action to actually stop things. This commit adds a new method Core::IsUninitialized, and changes all callers of IsRunning and GetState that look to me like they should be changed.
2024-06-21Core: Store current state in less placesJosJuice
Core::GetState reads from four different pieces of state: s_is_stopping, s_hardware_initialized, s_is_booting, and CPUManager::IsStepping. I'm keeping that last one as is for now because there's code in Dolphin that sets it directly, but we can unify the other three to make things easier to reason about. This commit also gets rid of s_is_started. This was previously used in Core::IsRunningAndStarted to ensure true wouldn't be returned until the CPU thread was started, but it wasn't used in Core::GetState, so Core::GetState would happily return State::Running after we had initialized the hardware but before we had initialized the CPU thread. As far as I know, there are no callers that have any real need to know whether the boot process is currently initializing the hardware or the CPU thread. Perhaps once upon a time there was a desire to make the apploader debuggable, but a long time has passed without anyone stepping up to implement it, and the way CBoot::RunApploader is implemented makes it rather difficult. So this commit makes all the functions in Core.cpp consider the core to still be starting until the CPU thread is started.
2024-06-08MainWindow: Don't save UI geometry in batch mode. Batch mode was erasing ↵TryTwo
the UI geometry for the sessions where batch mode is off. Render widget is still saved.
2024-06-04MainWindow: Check for batch mode before show().TryTwo
2024-05-22MainWindow: Initialize geometries before calling GetWindowSystemInfo.TryTwo
On Windows: wsi.render_window being set will set/save the initial geometry, which will cause sizing bugs until it's set again by the user resizing/repositioning.
2024-05-03Core::SetState: Avoid Global System Accessormitaclaw
2024-05-01Core::IsRunning: Avoid Global System Accessormitaclaw