summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGravatar Lioncash2019-05-23 00:26:17 -0400
committerGravatar Lioncash2019-05-23 00:26:21 -0400
commit3e7d37301a4c3ce68f0f20e702b35e97656108fc (patch)
treed39f7df32474e3561676d47ed5eb19996c52359d /src
parentservice/aoc: Remove unnecessary includes (diff)
downloadyuzu-3e7d37301a4c3ce68f0f20e702b35e97656108fc.tar.gz
yuzu-3e7d37301a4c3ce68f0f20e702b35e97656108fc.tar.xz
yuzu-3e7d37301a4c3ce68f0f20e702b35e97656108fc.zip
service/aoc: Avoid allocating and discarding data
Previously, the code was accumulating data into a std::vector and then tossing all of it away if a setting was disabled. Instead, we can just check if it's disabled and do no work at all if possible. If it's enabled, then we can append to the vector and allocate. Unlikely to impact usage much, but it is slightly less sloppy with resources.
Diffstat (limited to 'src')
-rw-r--r--src/core/hle/service/aoc/aoc_u.cpp16
1 files changed, 8 insertions, 8 deletions
diff --git a/src/core/hle/service/aoc/aoc_u.cpp b/src/core/hle/service/aoc/aoc_u.cpp
index 5838be3fc..d3e97776b 100644
--- a/src/core/hle/service/aoc/aoc_u.cpp
+++ b/src/core/hle/service/aoc/aoc_u.cpp
@@ -116,15 +116,15 @@ void AOC_U::ListAddOnContent(Kernel::HLERequestContext& ctx) {
116 const auto current = Core::System::GetInstance().CurrentProcess()->GetTitleID(); 116 const auto current = Core::System::GetInstance().CurrentProcess()->GetTitleID();
117 117
118 std::vector<u32> out; 118 std::vector<u32> out;
119 for (size_t i = 0; i < add_on_content.size(); ++i) {
120 if ((add_on_content[i] & DLC_BASE_TITLE_ID_MASK) == current) {
121 out.push_back(static_cast<u32>(add_on_content[i] & 0x7FF));
122 }
123 }
124
125 const auto& disabled = Settings::values.disabled_addons[current]; 119 const auto& disabled = Settings::values.disabled_addons[current];
126 if (std::find(disabled.begin(), disabled.end(), "DLC") != disabled.end()) { 120 if (std::find(disabled.begin(), disabled.end(), "DLC") == disabled.end()) {
127 out = {}; 121 for (u64 content_id : add_on_content) {
122 if ((content_id & DLC_BASE_TITLE_ID_MASK) != current) {
123 continue;
124 }
125
126 out.push_back(static_cast<u32>(content_id & 0x7FF));
127 }
128 } 128 }
129 129
130 if (out.size() < offset) { 130 if (out.size() < offset) {