From e94d24f5086e6bd371fe74661ad8a650fb99ea55 Mon Sep 17 00:00:00 2001 From: Marco Carvalho Date: Fri, 9 Jun 2023 08:05:32 -0300 Subject: [PATCH] Prefer a 'TryGetValue' call over a Dictionary indexer access guarded by a 'ContainsKey' (#5231) * Prefer a 'TryGetValue' call over a Dictionary indexer access guarded by a 'ContainsKey' check to avoid double lookup * fix --- src/Ryujinx.HLE/FileSystem/ContentManager.cs | 22 +++++++++----------- src/Ryujinx.Input/Motion/CemuHook/Client.cs | 8 +++---- 2 files changed, 13 insertions(+), 17 deletions(-) diff --git a/src/Ryujinx.HLE/FileSystem/ContentManager.cs b/src/Ryujinx.HLE/FileSystem/ContentManager.cs index 9facdd0b7..e00310a07 100644 --- a/src/Ryujinx.HLE/FileSystem/ContentManager.cs +++ b/src/Ryujinx.HLE/FileSystem/ContentManager.cs @@ -181,7 +181,7 @@ namespace Ryujinx.HLE.FileSystem } } - if (_locationEntries.ContainsKey(storageId) && _locationEntries[storageId]?.Count == 0) + if (_locationEntries.TryGetValue(storageId, out var locationEntriesItem) && locationEntriesItem?.Count == 0) { _locationEntries.Remove(storageId); } @@ -347,9 +347,9 @@ namespace Ryujinx.HLE.FileSystem { lock (_lock) { - if (_contentDictionary.ContainsKey((titleId, contentType))) + if (_contentDictionary.TryGetValue((titleId, contentType), out var contentDictionaryItem)) { - return UInt128Utils.FromHex(_contentDictionary[(titleId, contentType)]); + return UInt128Utils.FromHex(contentDictionaryItem); } } @@ -719,9 +719,9 @@ namespace Ryujinx.HLE.FileSystem Nca nca = new Nca(_virtualFileSystem.KeySet, storage); - if (updateNcas.ContainsKey(nca.Header.TitleId)) + if (updateNcas.TryGetValue(nca.Header.TitleId, out var updateNcasItem)) { - updateNcas[nca.Header.TitleId].Add((nca.Header.ContentType, entry.FullName)); + updateNcasItem.Add((nca.Header.ContentType, entry.FullName)); } else { @@ -732,10 +732,8 @@ namespace Ryujinx.HLE.FileSystem } } - if (updateNcas.ContainsKey(SystemUpdateTitleId)) + if (updateNcas.TryGetValue(SystemUpdateTitleId, out var ncaEntry)) { - var ncaEntry = updateNcas[SystemUpdateTitleId]; - string metaPath = ncaEntry.Find(x => x.type == NcaContentType.Meta).path; CnmtContentMetaEntry[] metaEntries = null; @@ -770,9 +768,9 @@ namespace Ryujinx.HLE.FileSystem throw new FileNotFoundException("System update title was not found in the firmware package."); } - if (updateNcas.ContainsKey(SystemVersionTitleId)) + if (updateNcas.TryGetValue(SystemVersionTitleId, out var updateNcasItem)) { - string versionEntry = updateNcas[SystemVersionTitleId].Find(x => x.type != NcaContentType.Meta).path; + string versionEntry = updateNcasItem.Find(x => x.type != NcaContentType.Meta).path; using (Stream ncaStream = GetZipStream(archive.GetEntry(versionEntry))) { @@ -916,9 +914,9 @@ namespace Ryujinx.HLE.FileSystem } } - if (updateNcas.ContainsKey(nca.Header.TitleId)) + if (updateNcas.TryGetValue(nca.Header.TitleId, out var updateNcasItem)) { - updateNcas[nca.Header.TitleId].Add((nca.Header.ContentType, entry.FullPath)); + updateNcasItem.Add((nca.Header.ContentType, entry.FullPath)); } else { diff --git a/src/Ryujinx.Input/Motion/CemuHook/Client.cs b/src/Ryujinx.Input/Motion/CemuHook/Client.cs index 4498b8ca6..a79412a17 100644 --- a/src/Ryujinx.Input/Motion/CemuHook/Client.cs +++ b/src/Ryujinx.Input/Motion/CemuHook/Client.cs @@ -338,12 +338,10 @@ namespace Ryujinx.Input.Motion.CemuHook { int slot = inputData.Shared.Slot; - if (_motionData.ContainsKey(clientId)) + if (_motionData.TryGetValue(clientId, out var motionDataItem)) { - if (_motionData[clientId].ContainsKey(slot)) + if (motionDataItem.TryGetValue(slot, out var previousData)) { - MotionInput previousData = _motionData[clientId][slot]; - previousData.Update(accelerometer, gyroscrope, timestamp, cemuHookConfig.Sensitivity, (float)cemuHookConfig.GyroDeadzone); } else @@ -352,7 +350,7 @@ namespace Ryujinx.Input.Motion.CemuHook input.Update(accelerometer, gyroscrope, timestamp, cemuHookConfig.Sensitivity, (float)cemuHookConfig.GyroDeadzone); - _motionData[clientId].Add(slot, input); + motionDataItem.Add(slot, input); } } else