aboutsummaryrefslogtreecommitdiffstats
path: root/router/router.h
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2022-06-18 08:20:34 -0700
committerChris Robinson <[email protected]>2022-06-18 08:20:34 -0700
commit0e7d5736c0b66d0639beb395b512416d252d28fb (patch)
tree0f57f46f74603b4124cf32efcf66189891685192 /router/router.h
parentfcc73d332409c31f55c4387a0a94fa3a2830068f (diff)
Add EFX functions back to the router
They're necessary for proper exports whem building the router. And if there's ever a spec update that standardizes them, they'll be needed anyway.
Diffstat (limited to 'router/router.h')
-rw-r--r--router/router.h40
1 files changed, 39 insertions, 1 deletions
diff --git a/router/router.h b/router/router.h
index f49a96ef..2a126d42 100644
--- a/router/router.h
+++ b/router/router.h
@@ -8,6 +8,7 @@
#include <stdio.h>
#include <atomic>
+#include <memory>
#include <mutex>
#include <string>
#include <utility>
@@ -24,6 +25,7 @@ struct DriverIface {
std::wstring Name;
HMODULE Module{nullptr};
int ALCVer{0};
+ std::once_flag InitOnceCtx{};
LPALCCREATECONTEXT alcCreateContext{nullptr};
LPALCMAKECONTEXTCURRENT alcMakeContextCurrent{nullptr};
@@ -123,6 +125,41 @@ struct DriverIface {
LPALSPEEDOFSOUND alSpeedOfSound{nullptr};
LPALDISTANCEMODEL alDistanceModel{nullptr};
+ /* Functions to load after first context creation. */
+ LPALGENFILTERS alGenFilters{nullptr};
+ LPALDELETEFILTERS alDeleteFilters{nullptr};
+ LPALISFILTER alIsFilter{nullptr};
+ LPALFILTERF alFilterf{nullptr};
+ LPALFILTERFV alFilterfv{nullptr};
+ LPALFILTERI alFilteri{nullptr};
+ LPALFILTERIV alFilteriv{nullptr};
+ LPALGETFILTERF alGetFilterf{nullptr};
+ LPALGETFILTERFV alGetFilterfv{nullptr};
+ LPALGETFILTERI alGetFilteri{nullptr};
+ LPALGETFILTERIV alGetFilteriv{nullptr};
+ LPALGENEFFECTS alGenEffects{nullptr};
+ LPALDELETEEFFECTS alDeleteEffects{nullptr};
+ LPALISEFFECT alIsEffect{nullptr};
+ LPALEFFECTF alEffectf{nullptr};
+ LPALEFFECTFV alEffectfv{nullptr};
+ LPALEFFECTI alEffecti{nullptr};
+ LPALEFFECTIV alEffectiv{nullptr};
+ LPALGETEFFECTF alGetEffectf{nullptr};
+ LPALGETEFFECTFV alGetEffectfv{nullptr};
+ LPALGETEFFECTI alGetEffecti{nullptr};
+ LPALGETEFFECTIV alGetEffectiv{nullptr};
+ LPALGENAUXILIARYEFFECTSLOTS alGenAuxiliaryEffectSlots{nullptr};
+ LPALDELETEAUXILIARYEFFECTSLOTS alDeleteAuxiliaryEffectSlots{nullptr};
+ LPALISAUXILIARYEFFECTSLOT alIsAuxiliaryEffectSlot{nullptr};
+ LPALAUXILIARYEFFECTSLOTF alAuxiliaryEffectSlotf{nullptr};
+ LPALAUXILIARYEFFECTSLOTFV alAuxiliaryEffectSlotfv{nullptr};
+ LPALAUXILIARYEFFECTSLOTI alAuxiliaryEffectSloti{nullptr};
+ LPALAUXILIARYEFFECTSLOTIV alAuxiliaryEffectSlotiv{nullptr};
+ LPALGETAUXILIARYEFFECTSLOTF alGetAuxiliaryEffectSlotf{nullptr};
+ LPALGETAUXILIARYEFFECTSLOTFV alGetAuxiliaryEffectSlotfv{nullptr};
+ LPALGETAUXILIARYEFFECTSLOTI alGetAuxiliaryEffectSloti{nullptr};
+ LPALGETAUXILIARYEFFECTSLOTIV alGetAuxiliaryEffectSlotiv{nullptr};
+
template<typename T>
DriverIface(T&& name, HMODULE mod)
: Name(std::forward<T>(name)), Module(mod)
@@ -134,8 +171,9 @@ struct DriverIface {
Module = nullptr;
}
};
+using DriverIfacePtr = std::unique_ptr<DriverIface>;
-extern std::vector<DriverIface> DriverList;
+extern std::vector<DriverIfacePtr> DriverList;
extern thread_local DriverIface *ThreadCtxDriver;
extern std::atomic<DriverIface*> CurrentCtxDriver;