forked from dolphin-emu/dolphin
IOS/ES: Fix content table handling
This is larger than I thought I would be, but unfortunately it's quite hard to split fixes like this when the handling is wrong in tons of different places. The content table is limited in size. It can only hold 16 entries. Three consequences: * Since the table cannot grow indefinitely, instead of using a std::map we use a std::array as we should. * Remove a hack where the CFD was cleared back to 0 on IPC close (wtf?) * The CFD now doesn't keep increasing to infinity. It's unknown if this would fix anything at all, but some issues in the past were caused by CFDs being excessively large. Other minor changes: * Simplify save state logic. * Keep track of the UID like ES does. Not sure how useful this is, but we can do this very easily so why not. * Remove the guesswork and use the actual error codes. * Add more error checking to make Dolphin less likely to crash. Something that should be done in the future: deduplicate the filesystem logic. Something that takes one line in the actual ES code takes 10+ lines in our implementation... while duplicating the FS logic... This will likely harder to fix though, so I'm leaving that for another time.
This commit is contained in:
@@ -73,7 +73,7 @@ static Common::Event g_compressAndDumpStateSyncEvent;
|
||||
static std::thread g_save_thread;
|
||||
|
||||
// Don't forget to increase this after doing changes on the savestate system
|
||||
static const u32 STATE_VERSION = 86; // Last changed in PR 2353
|
||||
static const u32 STATE_VERSION = 87; // Last changed in PR 5707
|
||||
|
||||
// Maps savestate versions to Dolphin versions.
|
||||
// Versions after 42 don't need to be added to this list,
|
||||
|
||||
Reference in New Issue
Block a user