MCPcopy Create free account
hub / github.com/TorqueGameEngines/Torque3D / EnsureEffects

Function EnsureEffects

Engine/lib/openal-soft/al/effect.cpp:155–176  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

153}
154
155bool EnsureEffects(ALCdevice *device, size_t needed)
156{
157 size_t count{std::accumulate(device->EffectList.cbegin(), device->EffectList.cend(), size_t{0},
158 [](size_t cur, const EffectSubList &sublist) noexcept -> size_t
159 { return cur + static_cast<ALuint>(al::popcount(sublist.FreeMask)); })};
160
161 while(needed > count)
162 {
163 if UNLIKELY(device->EffectList.size() >= 1<<25)
164 return false;
165
166 device->EffectList.emplace_back();
167 auto sublist = device->EffectList.end() - 1;
168 sublist->FreeMask = ~0_u64;
169 sublist->Effects = static_cast<ALeffect*>(al_calloc(alignof(ALeffect), sizeof(ALeffect)*64));
170 if UNLIKELY(!sublist->Effects)
171 {
172 device->EffectList.pop_back();
173 return false;
174 }
175 count += 64;
176 }
177 return true;
178}
179

Callers 1

effect.cppFile · 0.85

Calls 9

popcountFunction · 0.85
UNLIKELYFunction · 0.85
al_callocFunction · 0.85
cbeginMethod · 0.45
cendMethod · 0.45
sizeMethod · 0.45
emplace_backMethod · 0.45
endMethod · 0.45
pop_backMethod · 0.45

Tested by

no test coverage detected