Commit graph

389 commits

Author SHA1 Message Date
Elad 575a245f8d
IDM: Implement lock-free smart pointers (#16403)
Replaces `std::shared_pointer` with `stx::atomic_ptr` and `stx::shared_ptr`.

Notes to programmers:

* This pr kills the use of `dynamic_cast`, `std::dynamic_pointer_cast` and `std::weak_ptr` on IDM objects, possible replacement is to save the object ID on the base object, then use idm::check/get_unlocked to the destination type via the saved ID which may be null. Null pointer check is how you can tell type mismatch (as dynamic cast) or object destruction (as weak_ptr locking).
* Double-inheritance on IDM objects should be used with care, `stx::shared_ptr` does not support constant-evaluated pointer offsetting to parent/child type.
* `idm::check/get_unlocked` can now be used anywhere.

Misc fixes:
* Fixes some segfaults with RPCN with interaction with IDM.
* Fix deadlocks in access violation handler due locking recursion.
* Fixes race condition in process exit-spawn on memory containers read.
* Fix bug that theoretically can prevent RPCS3 from booting - fix `id_manager::typeinfo` comparison to compare members instead of `memcmp` which can fail spuriously on padding bytes.
* Ensure all IDM inherited types of base, either has `id_base` or `id_type` defined locally, this allows to make getters such as `idm::get_unlocked<lv2_socket, lv2_socket_raw>()` which were broken before. (requires save-states invalidation)
* Removes broken operator[] overload of `stx::shared_ptr` and `stx::single_ptr` for non-array types.
2024-12-22 20:59:48 +02:00
Elad 68c58281e5 System.cpp: Add system_state::loading 2024-11-27 16:00:40 +02:00
Elad 07df91d4e8 Fix Emulation boot recursion 2024-11-27 16:00:40 +02:00
Elad fce07bbeab Qt: Deprecate proccessEvents() usage 2024-11-26 03:33:24 +02:00
Megamouse 070add461f overlays: get localized values in home menu settings 2024-11-15 09:48:12 +01:00
Antonino Di Guardo df9275819e
Added reconciliation functions for game list file (games.yml) (#16061) 2024-09-20 08:46:51 +02:00
Antonino Di Guardo d1648dd707
[TESTERS NEEDED] Improved contextual menu (#16038) 2024-09-14 21:51:42 +02:00
Elad Ashkenazi a2dcbb9c13 Replace src_loc with std::soource_location 2024-05-21 14:19:12 +03:00
Elad Ashkenazi 6d8575d0d0 Savestates: Warn on invalid SPU save state 2024-05-14 19:36:48 +03:00
Megamouse c11c286206 Adust vsh cache dir criteria 2024-05-07 08:47:29 +02:00
Eladash d1837b54b4 Savestates: Add save stage names 2024-04-13 13:48:00 +03:00
Eladash 6a3e795d73 Fix shutting down emulation while save-stating 2024-03-26 21:35:53 +02:00
Elad Ashkenazi 453a3c4852 Fixup Savestate Segfault 2024-03-25 12:05:24 +02:00
Eladash 580f9bf03a GUI: Progress Dialog On Save State Creation 2024-03-24 16:19:06 +02:00
Eladash 213a19c9f3 Add logging for CallFromMainThread 2024-03-24 16:19:06 +02:00
Megamouse 5fe36872c5 System: don't consider games as registered if they were already in games.yml
Also, show message if nothing was added
2024-01-24 08:18:57 +01:00
Megamouse 8a87dc63b1 Emu: Add more info to BlockingCallFromMainThread 2024-01-21 00:11:16 +01:00
Eladash ce5f7bd4ff Savestates: Rename DeferDeserialization, add some asserts 2024-01-01 11:58:00 +02:00
Eladash 099c74481d Savestates: Optimize SPU pausing 2023-10-01 12:00:41 +03:00
Eladash e79fc867c5 Patches: Add savable breakpoints patch type 2023-09-26 11:06:01 +03:00
Elad Ashkenazi 968762c135 Fix PPU SELF Precompilation 2023-08-14 18:47:20 +03:00
Ivan Chikish d34287b2cc Linux: use futex_waitv syscall for atomic waiting
In order to make this possible, some unnecessary features were removed.
2023-08-02 21:46:06 +03:00
Elad Ashkenazi 5d98f3866c Log TTY output after emulation have been stopped 2023-07-26 17:56:44 +03:00
Eladash 05824e6acd UX: Option to pause emulation when RPCS3 is not focused 2023-07-07 14:38:32 +03:00
Eladash a03dd44924 Empty kill and init callback before calling them 2023-06-29 12:12:56 +03:00
Eladash d34b3190f7 Make stopping emulation not pause or crash UI
* Make the UI and main thread available when stopping emulation.
* Make BlockingCallFromMainThread always execute, preventing bugs when it unexpectedly did not.
* Add error code for when starting emulation when Emu.Kill() is in progress.
2023-06-26 20:48:38 +02:00
Megamouse c78c504043 overlays: update progress dialog workaround 2023-06-10 09:09:55 +02:00
Megamouse 404d08ef6d Qt: always use last boot path for game boot actions
The actual path caused the GUI to try to run elfs directly after booting a game from a loader.
2023-06-08 21:15:39 +02:00
Megamouse 3f5bc3464d Rename ProcureCurrentEmulationCourseInformation to GetEmulationIdentifier
This is much easier to understand in my opinion.
The old name just made me scratch my head whenever I read it.
2023-06-08 21:15:39 +02:00
Megamouse 66e1cf96e2 Qt/Loader: Let users choose which packages to install 2023-06-01 16:34:23 +02:00
Elad Ashkenazi a3271b08b7 System.cpp: Make boot of disc updates more strict 2023-05-14 17:47:56 +02:00
oltolm b0de5970ce
Get the font directory from Windows (#13825) 2023-05-13 20:58:59 +02:00
Megamouse ad5a62b62d Loader: split add_only into own function
The new code does not require any modifications apart from loading vfs
2023-04-28 17:16:04 +02:00
Megamouse cd9ff08235 Decrease some include madness 2023-04-26 21:37:44 +02:00
Megamouse 2c71d08ea2 Emu: Cache games.yml and only save when necessary 2023-04-21 20:18:24 +02:00
Eladash a1741f21cc Optimize AddGamesFromDir a bit 2023-04-21 12:14:44 +02:00
Eladash 79d09d02ed Add savestate buttons to home menu 2023-04-13 20:46:37 +02:00
Megamouse 364c33060b Fix boot by RPCS3_GAMEID constants 2023-02-20 22:53:22 +01:00
Megamouse e064380a7d overlays: add message box to home menu 2023-02-09 20:36:35 +01:00
Megamouse 9375e255e1 overlays: add pages to home menu 2023-02-09 20:36:35 +01:00
Megamouse d3183708e8 overlays: do not open home menu in VSH 2023-01-21 09:11:53 +01:00
Megamouse 44771150b7 overlays: add simple home menu 2023-01-21 09:11:53 +01:00
brian218 d78e2dad29 sys_game: Made the LV2 Watchdog restarts the game forcefully 2022-12-15 13:12:40 +03:00
Elad Ashkenazi ad3ea966cb
Add RPCS3/games/ for automatic games detection, support PSN games outside HDD0 (#12982)
* SFO: Do not load PARAM.SFO with illegal TITLE_ID
* Add support for PSN games outside HDD0
* Add RPCS3/games/ for automatic game detection
2022-12-02 13:18:07 +03:00
Elad Ashkenazi c214f45e14
Savestates/rsx/IO: Resume emulation on long START press, enable "Start Paused" by defaut (#12881)
* Savestates: Enable "Start Paused" by default
* Emu/rsx/IO: Resume emulation on long START press
* rsx: fix missing graphics with savestates' "Start Paused" setting
* rsx/overlays: Add simple reference counting for messages to hide them manually
* Move some code in Emulator::Pause() so thread pausing is the first thing done by this function
2022-10-29 19:53:00 +02:00
Eladash 7ea0a6d642 sys_game_watchdog minor fixups 2022-10-18 13:08:48 +02:00
Megamouse 87e628a9e9 cellPhotoDecode: optimize get_scaled_image 2022-07-29 08:05:35 +02:00
Megamouse f31ffc4596 Implement cellPhotoDecode 2022-07-28 09:06:48 +02:00
Megamouse 3d73915358 cellSearch: improve populate_photo_info, read image headers 2022-07-26 17:27:35 +02:00
Megamouse 683fa2a392 Mount custom dev_bdvd if a disc game was mounted from dev_hdd0 2022-07-22 07:36:49 +02:00