MCPcopy Create free account
hub / github.com/crownengine/crown / EnsureEffects

Function EnsureEffects

3rdparty/openal/al/effect.cpp:141–163  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

139}
140
141bool EnsureEffects(ALCdevice *device, size_t needed)
142{
143 size_t count{std::accumulate(device->EffectList.cbegin(), device->EffectList.cend(), size_t{0},
144 [](size_t cur, const EffectSubList &sublist) noexcept -> size_t
145 { return cur + static_cast<ALuint>(POPCNT64(sublist.FreeMask)); }
146 )};
147
148 while(needed > count)
149 {
150 if UNLIKELY(device->EffectList.size() >= 1<<25)
151 return false;
152
153 device->EffectList.emplace_back();
154 auto sublist = device->EffectList.end() - 1;
155 sublist->FreeMask = ~0_u64;
156 sublist->Effects = static_cast<ALeffect*>(al_calloc(alignof(ALeffect), sizeof(ALeffect)*64));
157 if UNLIKELY(!sublist->Effects)
158 {
159 device->EffectList.pop_back();
160 return false;
161 }
162 count += 64;
163 }
164 return true;
165}
166

Callers 1

effect.cppFile · 0.85

Calls 7

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