Commit Graph
28 Commits
Author SHA1 Message Date
libretroadmin f1208a7a5a Make threading lock-free
The core and the headless tools no longer use mutexes, condition variables,
spinlocks, std::atomic, std::thread or volatile flags. Threads hand off through
libretro-common's retro_atomic and rthreads plus a few small pieces on top of
them in Common/Thread: Thread, MpscQueue, EventCounter, ParkingLot waits and
ReaderGate. Every wait blocks until it's woken; nothing polls on a timer.

State that only one thread touches just loses its lock. The PSP filesystem,
sceIo and the savedata dialog now belong to the emulation thread: async reads
and writes run when they're queued and complete later in emulated time, and
the IO and savedata threads are gone. The friend finder only talks to the
adhoc server and hands what it gets to the emulation thread. GPU init always
runs on the thread that starts the game.

The Vulkan render and compile queues, pipeline and render pass caches, delete
list and SPIR-V cache, the GL render queue, the software renderer's jit caches,
the file loader caches, the web debugger, UPnP, input, savestates, logging and
the GE debugger all hand off through queues and atomics. The IR jit's spinning
profiler thread goes.

A CPU thread with nothing to run now sleeps until work is queued instead of
spinning. Headless with --debugger waits for a client while stopped, and ends
the run once every client that connected has left. Web server shutdown keeps
servicing the CPU queue until the server has finished.
2026-10-09 04:56:16 +02:00
Henrik Rydgård a92ff89d5f Clean up the OSD click callback code 2026-02-09 13:08:44 +01:00
Henrik Rydgård 2b6be8090c Cancel compatibility warning popups if you start another game in the meantime 2026-02-08 16:38:07 +01:00
Henrik Rydgård e7a9a10aac Fix issue with hiding certain notifications when not in-game (should be per type, not per edge) 2025-10-29 13:39:34 +01:00
Henrik Rydgård 6f76c579fc Delete dead code, more std::string_view 2025-09-01 00:15:23 +02:00
Henrik Rydgård f410b7e6ea Show a tiny indicator in the top left of the screen when the game is saving or loading. 2025-07-10 15:11:59 +02:00
Henrik Rydgård 59b1e20b75 Add a transparent indicator style, use it for alt speed popups 2025-01-20 20:48:05 +01:00
Henrik Rydgård 6575ba5487 Make screenshot notifications clickable (on platforms where it's possible) 2024-04-10 13:21:23 +02:00
Henrik Rydgård c6c733a27a Add way to pass data into OSD click callbacks (and a way to free it) 2024-04-10 13:18:30 +02:00
Henrik Rydgård c5791764d8 Make the i18n T function use std::string_view
Buildfixes, crashfixes

One more

Android buildfix

Buildfix Qt
2024-02-12 18:44:39 +01:00
Henrik Rydgård 3831ec1921 Warn the user about bad CHDs
If they're not created with "chdman createdvd", they will perform really
badly.
2024-01-31 22:15:47 +01:00
Henrik Rydgård 55adcb1a13 Warn the user if they try to run an extracted ISO, with a very in-your-face message.
Fixes #18735
2024-01-20 23:01:08 +01:00
Henrik Rydgård 3ce843819e Show a notification if a game exits with sceKernelExitGame. Mainly useful for homebrew. 2024-01-15 10:36:32 +01:00
Herman Semenov 5a0d54be83 [Common/Data/GPU/Input/System/UI] Added const reference for function params 2023-12-14 14:21:11 +03:00
Henrik Rydgård cd78097e74 Allow dismissing notifications by touching/clicking them.
Fixes #18040

Might do something more elegant in the future.
2023-09-04 10:01:07 +02:00
Henrik Rydgård f45176fd25 Allow configuring in which corner achievement notifications can show up. 2023-08-01 12:52:09 +02:00
Henrik Rydgård 1071e1f248 Move towards separate types for leaderboard events 2023-08-01 11:57:28 +02:00
Henrik Rydgård d268dd639a Move the ScreenEdgePosition enum to a more appropriate location 2023-08-01 01:01:57 +02:00
Henrik Rydgård 48d577014a Refactor the on-screen display to be more customizable 2023-08-01 00:28:54 +02:00
Henrik Rydgård 1c05f71b50 Update to the latest version of rcheevos. 2023-07-30 11:58:55 +02:00
Henrik Rydgård 2baba83f1a Add a bunch of new icon images to the atlas. 2023-07-24 14:52:32 +02:00
Henrik Rydgård ecea3844b0 Improved progress bar popups for downloads
Now shows the filename, and also there's a delay mode where they'll only
be visible if the download takes more than a second, plus they can be
named.
2023-07-18 15:13:44 +02:00
Henrik Rydgård 6bb97b3d46 Better mechanism to fade out the side bar when not on EmuScreen 2023-07-16 08:55:48 +02:00
Henrik Rydgård 3f924d1494 Smoothly remove any left-over overlays on emuscreen exit. 2023-07-10 21:04:22 +02:00
Henrik Rydgård cd45125085 RetroAchievements: Show active challenge achievements on pause screen. 2023-07-10 10:39:44 +02:00
Henrik Rydgård 9e4387c529 Implement more OSD types (challenge, progress indicators). Not really tested. 2023-07-08 21:48:23 +02:00
Henrik Rydgård d0b42705a0 Switch over to rc-client 2023-07-08 18:59:37 +02:00
Henrik Rydgård eb21a2e6c9 Break out the OSD data holder from Common/System/System.h, into OSD.cpp/h 2023-06-30 17:15:49 +02:00