From db417168dbee2507f813149cd5286cfc440521f5 Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Sun, 19 Nov 2017 14:58:16 -0800 Subject: [PATCH] Store the DeviceManagerImpl as a reference --- include/AL/alure2.h | 5 ++--- src/devicemanager.cpp | 25 +++++++++++++++---------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/include/AL/alure2.h b/include/AL/alure2.h index 0f4be25..2e1a2e2 100644 --- a/include/AL/alure2.h +++ b/include/AL/alure2.h @@ -313,10 +313,9 @@ enum class DefaultDeviceType { * is a singleton, only one instance will exist in a process. */ class ALURE_API DeviceManager { - DeviceManagerImpl *pImpl; + DeviceManagerImpl &pImpl; - DeviceManager(DeviceManagerImpl *impl) : pImpl(impl) { } - friend class ALDeviceManager; + DeviceManager(DeviceManagerImpl &impl) : pImpl(impl) { } public: DeviceManager(const DeviceManager&) = default; diff --git a/src/devicemanager.cpp b/src/devicemanager.cpp index ec1090c..a2eb5ec 100644 --- a/src/devicemanager.cpp +++ b/src/devicemanager.cpp @@ -55,7 +55,7 @@ static inline void GetDeviceProc(T **func, ALCdevice *device, const char *name) ALCboolean (ALC_APIENTRY*DeviceManagerImpl::SetThreadContext)(ALCcontext*); DeviceManager DeviceManager::get() -{ return DeviceManager(&DeviceManagerImpl::get()); } +{ return DeviceManager(DeviceManagerImpl::get()); } DeviceManagerImpl &DeviceManagerImpl::get() { static DeviceManagerImpl singleton; @@ -75,14 +75,16 @@ DeviceManagerImpl::~DeviceManagerImpl() bool DeviceManager::queryExtension(const String &name) const -{ return pImpl->queryExtension(name.c_str()); } -DECL_THUNK1(bool, DeviceManager, queryExtension, const, const char*) +{ return pImpl.queryExtension(name.c_str()); } +bool DeviceManager::queryExtension(const char *name) const +{ return pImpl.queryExtension(name); } bool DeviceManagerImpl::queryExtension(const char *name) const { return alcIsExtensionPresent(nullptr, name); } -DECL_THUNK1(Vector, DeviceManager, enumerate, const, DeviceEnumeration) +Vector DeviceManager::enumerate(DeviceEnumeration type) const +{ return pImpl.enumerate(type); } Vector DeviceManagerImpl::enumerate(DeviceEnumeration type) const { Vector list; @@ -97,7 +99,8 @@ Vector DeviceManagerImpl::enumerate(DeviceEnumeration type) const return list; } -DECL_THUNK1(String, DeviceManager, defaultDeviceName, const, DefaultDeviceType) +String DeviceManager::defaultDeviceName(DefaultDeviceType type) const +{ return pImpl.defaultDeviceName(type); } String DeviceManagerImpl::defaultDeviceName(DefaultDeviceType type) const { if(type == DefaultDeviceType::Full && !alcIsExtensionPresent(nullptr, "ALC_ENUMERATE_ALL_EXT")) @@ -108,8 +111,9 @@ String DeviceManagerImpl::defaultDeviceName(DefaultDeviceType type) const Device DeviceManager::openPlayback(const String &name) -{ return pImpl->openPlayback(name.c_str()); } -DECL_THUNK1(Device, DeviceManager, openPlayback,, const char*) +{ return pImpl.openPlayback(name.c_str()); } +Device DeviceManager::openPlayback(const char *name) +{ return pImpl.openPlayback(name); } Device DeviceManagerImpl::openPlayback(const char *name) { ALCdevice *dev = alcOpenDevice(name); @@ -126,10 +130,11 @@ Device DeviceManagerImpl::openPlayback(const char *name) } Device DeviceManager::openPlayback(const String &name, const std::nothrow_t &nt) noexcept -{ return pImpl->openPlayback(name.c_str(), nt); } +{ return pImpl.openPlayback(name.c_str(), nt); } Device DeviceManager::openPlayback(const std::nothrow_t&) noexcept -{ return pImpl->openPlayback(nullptr, std::nothrow); } -DECL_THUNK2(Device, DeviceManager, openPlayback, noexcept, const char*, const std::nothrow_t&) +{ return pImpl.openPlayback(nullptr, std::nothrow); } +Device DeviceManager::openPlayback(const char *name, const std::nothrow_t &nt) noexcept +{ return pImpl.openPlayback(name, nt); } Device DeviceManagerImpl::openPlayback(const char *name, const std::nothrow_t&) noexcept { try { -- 2.11.4.GIT