Commit Graph
79 Commits
Author SHA1 Message Date
Silent 9f3d3e2b9c Address WIL todos in UICommon.cpp 2023-02-12 15:05:54 +01:00
Silent 7faf5ea170 Clear the UI after async shader compilation 2022-06-10 17:19:59 +02:00
Silent dcad3ec892 Allow to interrupt shader precompilation by stopping emulation 2022-06-10 17:11:32 +02:00
Silent d4b7ed4e38 GameList: Use titles from the Title Database for shortcut creation
Makes titles consistent with Dolphin's game list
2021-03-27 19:02:27 +01:00
Silent 0fb8f735e5 GameList: Remove invalid characters when creating a desktop shortcut
Fixes shortcut creation for games that have e.g. : in names.
2021-03-27 19:02:27 +01:00
Silent cb854d7832 AudioCommon/WASAPI: Construct std::thread with invoke semantics instead of a lambda 2021-01-12 19:25:40 +01:00
Silent 11c5150c16 AudioCommon/WASAPI: Factorize device enumeration logic into a function to greatly reduce code duplication 2021-01-12 19:25:38 +01:00
Silent c373890505 AudioCommon/WASAPI: Do volume adjustment only when really needed
This skips a potentially costly loop if volume is 100% or 0%,
as for former there is no need for volume adjustment,
while latter can be solved by specifying a AUDCLNT_BUFFERFLAGS_SILENT flag
2021-01-12 19:24:49 +01:00
Silent 991b3ba8c2 AudioCommon/WASAPI: Remove thread unsafe nullptr checks giving a false sense of safety 2021-01-12 19:24:49 +01:00
Silent 5dbbf36563 AudioCommon/WASAPI: Use std::string_view where applicable 2021-01-12 19:24:46 +01:00
Silent 7d59ad262f AudioCommon/WASAPI: Use leaner memory model on m_running, no need for a full barrier 2021-01-12 19:21:54 +01:00
Silent ee60be4501 AudioCommon/WASAPI: Simplify thread synchronization model by not detaching WASAPI handler thread 2021-01-12 19:21:54 +01:00
Silent c5a372ab2a AudioCommon/WASAPI: Use WRL/WIL whenever possible
This fixes numerous resource leaks, as not every return path cleaned every created resource
Now they are all managed automatically and "commited" to WASAPIStream class fields only
after it's certain they initialized properly
2021-01-12 19:21:22 +01:00
Silent 374629ef30 AudioCommon: Make HandleWinAPI handle all success return values properly, not just S_OK 2021-01-12 19:18:48 +01:00
Silent bb27da06ae AudioPane: Do not enable DPL II quality slider with HLE audio on init 2020-04-01 22:40:45 +02:00
Silent 4a438db2c9 Qt/GameListModel: Use native separators in File Path column 2020-03-19 18:03:35 +01:00
Silent d1f6f12f78 AudioPane: Do not enable Dolby Pro Logic II quality slider if DPLII is disabled 2020-03-06 21:13:45 +01:00
Silent f52a0aba24 Add Windows Implementation Libraries 2020-02-09 19:01:44 +01:00
Silent 5be9505ab3 Signal DSP thread after unlocking DSP mutex 2019-11-22 23:00:42 +01:00
Silent e30ff7c327 DSPLLE: Put DSP thread in idle state if it's paused to prevent a deadlock
DSP thread is considered "idle" when it signals s_ppc_event and waits for s_dsp_event,
without putting it in this state when m_dsp_thread_mutex is locked it was possible to
create a deadlock between a DSP thread, emulation thread and Qt thread by accessing
Config menu immediately after booting up the game
2019-11-22 22:07:41 +01:00
Silent 85c2841643 Make "Do you want to stop emulation?" application modal and disallow multiple instances at once
Fixes numerous issues with this dialog spawning multiple times
and putting Dolphin in a weird state.
2019-11-16 19:51:55 +01:00
Silent af92a88aa0 UI: Allow to specify modality of ready ModalMessageBoxes 2019-11-16 19:51:00 +01:00
Silent 4daeacba35 Fix malformed manifests 2019-11-11 11:47:10 +01:00
Silent a68789a70c D3DCommon: Remove unused GetDebugObjectName and tidy up SetDebugObjectName 2019-11-10 16:07:32 +01:00
Silent 8445644e05 D3DCommon: Migrate few remaining raw pointers to WRL::ComPtr 2019-11-10 16:07:32 +01:00
Silent a0111628fb Fixup GameListModel::UpdateGame and columnCount
- dataChanged takes "first" and "last" indices inclusive, not exclusive
- columnCount should return 0 for valid parents
2019-10-20 23:07:08 +02:00
Silent 68694e0039 Add signals to enable/disable Refresh button
Makes it impossible to spam Refresh button and looks better overall.
2019-10-19 23:15:38 +02:00
Silent cc6ffef4a1 Add CommandType::BeginRefresh
This resolves a race condition when spamming Refresh button,
which would often end up with duplicates game entries for the entire
duration of the session.
2019-10-19 23:07:10 +02:00
Silent 5e7b95db3b Add missing break to prevent fallthrough 2019-10-19 23:06:58 +02:00
Silent 26ebf5b650 Improvements to WorkQueueThread
- Do not use a lambda for std::thread as invoke constructor exists
- Use simpler std::lock_guard wherever possible
- Do not require T to be default constructible
- Move T out of the queue instead of copying
2019-10-08 22:57:33 +02:00
Silent ea8a3059bf Enable Win10 long path awareness in manifest files 2019-10-07 22:46:37 +02:00
Silent 45890c20cf Remove obsolete "Windows compatibility" macros 2019-10-07 22:46:37 +02:00
Silent 689378b435 Move GetModuleName to Common
This unifies GetModuleFileName calls between Dolphin and WinUpdater
and allows to gracefully remove MAX_PATH limit from GetExePath
2019-10-07 22:46:36 +02:00
Silent 3b21d32865 Remove MAX_PATH limit from:
- GetTempFilenameForAtomicWrite
- SetUserDirectory
2019-10-07 22:45:16 +02:00
Silent 6bfa4fa643 LogWidget: Use FixedSizeQueue for a log messages buffer
Messages buffer is intended to be of a fixed capacity (MAX_LOG_LINES),
which cannot be achieved by std::queue unless we manually pop() extra elements.
std::queue uses std::deque internally which most likely results in allocations performed continuously.
FixedSizeQueue keeps a single buffer during its entire lifetime, avoiding any allocations except the ones
performed by stored objects.
2019-08-31 21:18:07 +02:00
Silent b3969e91d9 FixedSizeQueue: Bugfixes and improvements
- Fixed a bug where pushing items over queue's size left it in a corrupted state
- For non-trivial types, have clear() and pop() run destructors
- Added emplace(args...)
- Added empty()

FixedSizeQueue has semantics of a circular buffer,
so pushing items continuously is expected to keep overwriting oldest elements gracefully.

Tests have been updated to verify correctness of a previously bugged behaviour
and to verify correctness of destructing non-trivial types
2019-08-31 21:18:07 +02:00
Silent b088fc37d5 LogWidget: Do not use QueueOnObject to construct log queue,
instead store a std::string constructed from string_view and convert to QString just before appending
2019-08-31 11:59:09 +02:00
Silent e746d95d01 LogWidget: Stop update timer when log window is invisible so it doesn't continuously update in the background 2019-08-31 11:57:27 +02:00
Silent 7cec8601f1 LogWidget: Remove scrollbar tampering code (doesn't seem to do anything), clear text queue on clearing log 2019-08-31 11:57:07 +02:00
Silent eb7d42dfe8 LogWidget: Replace QTextEdit with QPlainTextEdit for better performance
QTextEdit is heavy, similar in functionality to WordPad,
while QPlainTextEdit is lightweight like Notepad.
Qt documentation recommends using QPlainTextEdit for log viewers,
and it also allows to set automatic cutoff of oldest messages beyond a fixed point,
which we now set to MAX_LOG_LINES (5000)
2019-08-31 10:46:04 +02:00
Silent eab086b880 ConsoleListenerWin: Properly output console logging in UTF-16 so UTF-8 displays properly 2019-08-31 00:44:44 +02:00
Silent 37ef5a54c9 Core: Use move semantics for Renderer::SaveScreenshot 2019-08-28 19:52:35 +02:00
Silent ff8f978eaf Core: Generate screenshot name with timestamps instead of only increasing numbers 2019-08-28 19:52:35 +02:00
Silent df0ff7f3bb Enable adapter combo on emulation state change only if adapters are supported by current backend 2019-08-20 20:08:14 +02:00
Silent fe8c9dfa14 WinUpdater: Properly initialize COM on window thread and release ITaskbarList3 on exit 2019-08-19 22:37:48 +02:00
Silent 23f335ba91 Core/CPU: Make use of type deduction for scoped locks 2019-08-18 17:39:27 +02:00
Silent 2bc9e09456 Core/CPU: Do not yield to UI from CPU methods
Core::RunAsCPUThread may be called from Qt signals, and if code yields to UI there
then it results in infinite recursion
2019-08-18 17:39:26 +02:00
Silent 12ac784a41 Fix "Muted%" OSD message when muting sounds via a hotkey 2019-08-17 12:17:09 +02:00
Silent a35f540e7a Explicitly enable conformance mode, and remove /Zc:inline because it's a default now 2019-08-15 17:47:55 +02:00
Silent b6df0bff93 Make --batch run Dolphin in headless mode, provided --exec is also passed 2019-08-11 20:58:04 +02:00
Silent 80e8037e0b Truly use emplace_back in CommandLineConfigLayerLoader constructor 2019-08-11 20:43:18 +02:00
Silent 8e79705854 WinUpdater: Wait in UI::Init until window is done creating to avoid losing UI::SetVisible signals 2019-08-06 19:24:38 +02:00
Silent f70efbb963 WinUpdater: Create updater window as hidden by default
UpdaterCommon attempts to hide updater window directly after creating,
so creating it hidden avoids the window from showing for a split second
2019-08-05 21:47:05 +02:00
Silent 3fe8ef4c1c Make alert messages application modal and not window modal,
so assertions cannot be interrupted by terminating the application
2019-08-01 22:27:36 +02:00
Silent 48a4b62125 Change Layer code not to create superfluous std::optional entries in LayerMap 2019-08-01 22:22:05 +02:00
Silent cb4eecde52 Fix race conditions in Config Layers
API has been made stricter, layers are now managed with shared pointers,
so using them temporarily increased their reference counters.
Additionally, any s_layers map has been guarded by a read/write lock,
as concurrent write/reads to it were possible.
2019-07-30 22:10:17 +02:00
Silent baa9636d48 D3D11: Add extra logging to StateCache::Get 2019-07-29 16:48:24 +02:00
Silent 43bfb183c2 D3D11: Show a warning message about unsupported features when switching to D3D11 backend on Windows 7 2019-07-29 16:47:45 +02:00
Silent ff00873610 D3D11: Query for output merger logic op support and use logic op code only if supported
Previously code assumed that if DX11.1 runtime is supported, logic ops will,
but Windows 7 SP1 with a Platform Update supports DX11.1 runtime without logic ops.
This created pretty jarring visual artifacts, which now should be gone OR replaced
with much less jarring errors.
2019-07-29 16:47:39 +02:00
Silent a6b8e8b9c3 D3D11: Ownership fixes for objects in DXTexture 2019-07-29 16:43:02 +02:00
Silent 77425ef83b D3D11: Ownership fixes for objects in D3DState 2019-07-29 16:39:21 +02:00
Silent 88db577c17 D3D11: Correctly poll ALL possible AA levels. 2019-07-29 16:39:06 +02:00
Silent 890f781cd0 Factorize software renderer backend switching warning to be fetched from a new GetWarningMessage in video backend - will be needed for DX11.1 feature set warnings 2019-07-26 19:39:07 +02:00
Silent 799c52463e Fixes for WRL usage - QueryInterface is explicitly mentioned as not to be used with WRL ComPtr 2019-07-26 19:38:58 +02:00
Silent 3529dfd691 Connect numerous QPushButtons to use clicked signal instead of pressed. This unifies UI behaviour more. 2019-07-24 00:18:58 +02:00
Silent baab660f1c WinUpdater: Removed MAX_PATH limitation on path to updater, also fixed a wrong size parameter 2019-07-22 19:46:25 +02:00
Silent 94a19ca670 Qt/Updater: Fixed an assert on m_parent->close() (was called from a wrong thread) 2019-07-22 19:30:02 +02:00
Silent 4b03790eda Core: Fixup AutoUpdateChecker::TriggerUpdate on Windows:
- Properly close handles if Updater.exe process spawns successfully
- Fix STARTUPINFO sizeof typo
2019-07-22 19:29:50 +02:00
Silent a00dfeecf0 WinUpdater: Properly account for failure in WaitForPID 2019-07-22 19:29:22 +02:00
Silent d355abaf0c WinUpdater: Improved exit synchronization on Windows - now joins a thread instead of using flags to signal 2019-07-22 19:28:20 +02:00
Silent 3f1ba830e7 UpdaterCommon: Remove manual UI::Stop() calls in favour of a scope guard to ensure it's called on all return paths 2019-07-22 19:16:22 +02:00
Silent 2ae409ba06 WinUpdater: Replaced PeekMessage with GetMessage - removes a busy loop in favour of a proper wait based message queue 2019-07-22 19:16:14 +02:00
Silent 518d96ad48 Remove duplicated "Ignore and countinue?" 2019-07-21 15:36:24 +02:00
Silent 7045c68327 When clicking "Ignore for this session", make message box handler return true, so asserts can actually be skipped with this option 2019-07-20 21:04:27 +02:00
Silent e792a67dc6 Improve thread safety and remove an unnecessary string allocation from MsgAlert
s_msg_handler still seems thread unsafe, not sure if it should be or not
2019-07-20 21:03:45 +02:00
Silent 09aadf0e9c Fix CPU Clock Override checkbox not updating with GameINI - also bold it if it's overriden 2019-06-23 22:39:26 +02:00
Silent 5f0b4d8da5 Fix a crash in DSPTool on malformed command line 2019-06-23 21:55:51 +02:00
Silent 9eab3feddf Fix out of bounds read in HttpRequest::Impl::Fetch logging 2019-06-23 21:44:51 +02:00
Silent 6c21811090 Make DolphinAnalytics a true singleton - static local variables are initialized in a thread safe manner since C++11
Also works around a Visual Studio 2017 bug where static inline class fields are destructed multiple times
2019-06-23 21:43:47 +02:00