Post #3434473
2026-06-25 12:46 UTC
Next - refactoring.
So, I decided to require restart for the region preference. Changing it dynamically mostly worked, but not entirely, and made a few things a lot more complicated (e.g. anything listing platforms must listen to region changes, anything using controls must listen to changes too since they can change between regions, and e.g. the controls remapping dialog only updated the diagram but not the controls list).
Either way - it's restart only now, so I could simplify all of that and just have platforms define their names, after checking the region once, on startup.
Next, I got rid of the src/, shared/ and runner/ directory structure. It already didn't really reflect the actual app structure, since search provider was already in src/, along with its shared files.
So, runner process is now also in src, specifically src/runner/process/ - and all of the shared files have been integrated where it makes sense.
In particular, platform servers are now a part of their respective directories in platforms/, and PlatformServerFactory is similarly gone, replaced with a vfunc on platforms themselves.
Combined with the fact I split the centralized src/meson.build into smaller meson.builds in each subdir, platforms are a lot more self-contained now. Not entirely - there are still icons, gsettings schemas, controller diagrams, default controls and overlay controls - as well as gresources xml is still centralized - but a lot better than it was at least. My goal is to have each platform defined entirely in its respective dir + a line in PlatformRegister, so that adding more platforms is nice and straightforward.
Oh, and I changes the logic for the DualShock 4 accept/cancel buttons (they are region-specific) from doing it per-locale to doing it based on the selected region. Might as well since regions exist now.
Replies (1)
-
@alice@mk.nyaa.place 2026-06-25 12:47
I also tried to optimize the CRT filter a bit in progressive video cases. Not sure it was particularly successful, but well.