From 1f1cf03d2704efce8ac67b748bec44dc7983ee15 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Wed, 29 Nov 2017 12:59:28 -0800 Subject: [PATCH] Auto-clear the bitfield on initialization --- src/context.cpp | 2 -- src/device.cpp | 1 - src/main.h | 7 ++++--- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/context.cpp b/src/context.cpp index 679b05f..eb390c4 100644 --- a/src/context.cpp +++ b/src/context.cpp @@ -586,7 +586,6 @@ void ContextImpl::MakeThreadCurrent(ContextImpl *context) void ContextImpl::setupExts() { ALCdevice *device = mDevice.getALCdevice(); - mHasExt.clear(); for(const auto &entry : ALExtensionList) { if((strncmp(entry.name, "ALC", 3) == 0) ? alcIsExtensionPresent(device, entry.name) : @@ -675,7 +674,6 @@ ContextImpl::ContextImpl(DeviceImpl &device, ArrayView attrs) mContext = alcCreateContext(alcdev, &std::get<0>(attrs.front())); if(!mContext) throw alc_error(alcGetError(alcdev), "alcCreateContext failed"); - mHasExt.clear(); mSourceIds.reserve(256); mPendingHead = new PendingPromise{nullptr, {}, AL_NONE, 0, {}, {nullptr}}; mPendingCurrent.store(mPendingHead, std::memory_order_relaxed); diff --git a/src/device.cpp b/src/device.cpp index 0c0aefd..c40e492 100644 --- a/src/device.cpp +++ b/src/device.cpp @@ -55,7 +55,6 @@ namespace alure { void DeviceImpl::setupExts() { - mHasExt.clear(); for(const auto &entry : ALCExtensionList) { if(!alcIsExtensionPresent(mDevice, entry.name)) diff --git a/src/main.h b/src/main.h index 0cb12be..cac45e6 100644 --- a/src/main.h +++ b/src/main.h @@ -65,14 +65,15 @@ std::variant ParseTimeval(StringView strval, double sra template struct Bitfield { private: - std::array mElems; + Array mElems; public: + Bitfield() { std::fill(mElems.begin(), mElems.end(), 0); } + bool operator[](size_t i) const noexcept { return static_cast(mElems[i/8] & (1<<(i%8))); } - void clear() { std::fill(mElems.begin(), mElems.end(), 0); } - void set(size_t i) { mElems[i/8] |= 1<<(i%8); } + void set(size_t i) noexcept { mElems[i/8] |= 1<<(i%8); } }; -- 2.11.4.GIT