aboutsummaryrefslogtreecommitdiffstats
path: root/al/filter.cpp
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2023-12-29 03:39:58 -0800
committerChris Robinson <[email protected]>2023-12-29 03:39:58 -0800
commit10ecdff7d1dfcc16bd2a090f089781310ea9a93d (patch)
treeecd0f09a18f211ca7df2120e7c998aa037f5dfe4 /al/filter.cpp
parent768781bab97732fbd0d66fa153d4ebc768be1240 (diff)
Handle pointer ownership a bit better
Diffstat (limited to 'al/filter.cpp')
-rw-r--r--al/filter.cpp10
1 files changed, 5 insertions, 5 deletions
diff --git a/al/filter.cpp b/al/filter.cpp
index ce37b0aa..4a24a38f 100644
--- a/al/filter.cpp
+++ b/al/filter.cpp
@@ -129,8 +129,8 @@ bool EnsureFilters(ALCdevice *device, size_t needed)
device->FilterList.emplace_back();
auto sublist = device->FilterList.end() - 1;
sublist->FreeMask = ~0_u64;
- sublist->Filters = static_cast<gsl::owner<ALfilter*>>(al_calloc(alignof(ALfilter),
- sizeof(ALfilter)*64));
+ sublist->Filters = static_cast<gsl::owner<std::array<ALfilter,64>*>>(al_calloc(
+ alignof(ALfilter), sizeof(*sublist->Filters)));
if(!sublist->Filters) UNLIKELY
{
device->FilterList.pop_back();
@@ -151,7 +151,7 @@ ALfilter *AllocFilter(ALCdevice *device)
auto slidx = static_cast<ALuint>(al::countr_zero(sublist->FreeMask));
ASSUME(slidx < 64);
- ALfilter *filter{al::construct_at(sublist->Filters + slidx)};
+ ALfilter *filter{al::construct_at(al::to_address(sublist->Filters->begin() + slidx))};
InitFilterParams(filter, AL_FILTER_NULL);
/* Add 1 to avoid filter ID 0. */
@@ -186,7 +186,7 @@ inline ALfilter *LookupFilter(ALCdevice *device, ALuint id)
FilterSubList &sublist = device->FilterList[lidx];
if(sublist.FreeMask & (1_u64 << slidx)) UNLIKELY
return nullptr;
- return sublist.Filters + slidx;
+ return al::to_address(sublist.Filters->begin() + slidx);
}
} // namespace
@@ -696,7 +696,7 @@ FilterSubList::~FilterSubList()
while(usemask)
{
const int idx{al::countr_zero(usemask)};
- std::destroy_at(Filters+idx);
+ std::destroy_at(al::to_address(Filters->begin() + idx));
usemask &= ~(1_u64 << idx);
}
FreeMask = ~usemask;