aboutsummaryrefslogtreecommitdiffstats
path: root/Alc/alc.cpp
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2018-12-28 22:56:20 -0800
committerChris Robinson <[email protected]>2018-12-28 22:56:20 -0800
commit3d92e8c4df4ebaffbe44507f787f2382e3982c96 (patch)
treefe8f068a902d6b8f5f225120505529d1f6fe31cd /Alc/alc.cpp
parent67b874328d60062558eeb5068a3f79dab2b6f7e3 (diff)
Convert the backends to use proper inheritence
Diffstat (limited to 'Alc/alc.cpp')
-rw-r--r--Alc/alc.cpp61
1 files changed, 31 insertions, 30 deletions
diff --git a/Alc/alc.cpp b/Alc/alc.cpp
index 1b3692e2..95592556 100644
--- a/Alc/alc.cpp
+++ b/Alc/alc.cpp
@@ -1623,7 +1623,7 @@ static ALCenum UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
* the device attributes can be updated.
*/
if((device->Flags&DEVICE_RUNNING))
- V0(device->Backend,stop)();
+ device->Backend->stop();
device->Flags &= ~DEVICE_RUNNING;
}
@@ -1740,7 +1740,7 @@ static ALCenum UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
}
if((device->Flags&DEVICE_RUNNING))
- V0(device->Backend,stop)();
+ device->Backend->stop();
device->Flags &= ~DEVICE_RUNNING;
UpdateClockBase(device);
@@ -1893,7 +1893,7 @@ static ALCenum UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
device->UpdateSize, device->NumUpdates
);
- if(V0(device->Backend,reset)() == ALC_FALSE)
+ if(device->Backend->reset() == ALC_FALSE)
return ALC_INVALID_DEVICE;
if(device->FmtChans != oldChans && (device->Flags&DEVICE_CHANNELS_REQUEST))
@@ -2180,7 +2180,7 @@ static ALCenum UpdateDeviceParams(ALCdevice *device, const ALCint *attrList)
if(!(device->Flags&DEVICE_PAUSED))
{
- if(V0(device->Backend,start)() == ALC_FALSE)
+ if(device->Backend->start() == ALC_FALSE)
return ALC_INVALID_DEVICE;
device->Flags |= DEVICE_RUNNING;
}
@@ -2203,7 +2203,7 @@ ALCdevice_struct::~ALCdevice_struct()
{
TRACE("%p\n", this);
- DELETE_OBJ(Backend);
+ delete Backend;
Backend = nullptr;
size_t count{std::accumulate(BufferList.cbegin(), BufferList.cend(), size_t{0u},
@@ -2509,7 +2509,7 @@ static bool ReleaseContext(ALCcontext *context, ALCdevice *device)
if(GlobalContext.compare_exchange_strong(origctx, nullptr))
ALCcontext_DecRef(context);
- V0(device->Backend,lock)();
+ device->Backend->lock();
origctx = context;
newhead = context->next.load(std::memory_order_relaxed);
if(!device->ContextList.compare_exchange_strong(origctx, newhead))
@@ -2525,7 +2525,7 @@ static bool ReleaseContext(ALCcontext *context, ALCdevice *device)
}
else
ret = !!newhead;
- V0(device->Backend,unlock)();
+ device->Backend->unlock();
/* Make sure the context is finished and no longer processing in the mixer
* before sending the message queue kill event. The backend's lock does
@@ -2934,7 +2934,7 @@ static ALCsizei GetIntegerv(ALCdevice *device, ALCenum param, ALCsizei size, ALC
values[i++] = ALC_MINOR_VERSION;
values[i++] = alcMinorVersion;
values[i++] = ALC_CAPTURE_SAMPLES;
- values[i++] = V0(device->Backend,availableSamples)();
+ values[i++] = device->Backend->availableSamples();
values[i++] = ALC_CONNECTED;
values[i++] = device->Connected.load(std::memory_order_relaxed);
values[i++] = 0;
@@ -2950,7 +2950,7 @@ static ALCsizei GetIntegerv(ALCdevice *device, ALCenum param, ALCsizei size, ALC
case ALC_CAPTURE_SAMPLES:
{ std::lock_guard<std::mutex> _{device->BackendLock};
- values[0] = V0(device->Backend,availableSamples)();
+ values[0] = device->Backend->availableSamples();
}
return 1;
@@ -3443,9 +3443,9 @@ ALC_API ALCcontext* ALC_APIENTRY alcCreateContext(ALCdevice *device, const ALCin
alcSetError(dev.get(), err);
if(err == ALC_INVALID_DEVICE)
{
- V0(dev->Backend,lock)();
+ dev->Backend->lock();
aluHandleDisconnect(dev.get(), "Device update failure");
- V0(dev->Backend,unlock)();
+ dev->Backend->unlock();
}
backlock.unlock();
@@ -3526,7 +3526,7 @@ ALC_API ALCvoid ALC_APIENTRY alcDestroyContext(ALCcontext *context)
std::lock_guard<std::mutex> _{Device->BackendLock};
if(!ReleaseContext(ctx.get(), Device))
{
- V0(Device->Backend,stop)();
+ Device->Backend->stop();
Device->Flags &= ~DEVICE_RUNNING;
}
}
@@ -3778,7 +3778,7 @@ ALC_API ALCdevice* ALC_APIENTRY alcOpenDevice(const ALCchar *deviceName)
}
// Find a playback device to open
- ALCenum err{V(device->Backend,open)(deviceName)};
+ ALCenum err{device->Backend->open(deviceName)};
if(err != ALC_NO_ERROR)
{
device = nullptr;
@@ -3869,7 +3869,7 @@ ALC_API ALCboolean ALC_APIENTRY alcCloseDevice(ALCdevice *device)
ctx = next;
}
if((device->Flags&DEVICE_RUNNING))
- V0(device->Backend,stop)();
+ device->Backend->stop();
device->Flags &= ~DEVICE_RUNNING;
backlock.unlock();
@@ -3929,7 +3929,7 @@ ALC_API ALCdevice* ALC_APIENTRY alcCaptureOpenDevice(const ALCchar *deviceName,
DevFmtChannelsString(device->FmtChans), DevFmtTypeString(device->FmtType),
device->Frequency, device->UpdateSize, device->NumUpdates
);
- ALCenum err{V(device->Backend,open)(deviceName)};
+ ALCenum err{device->Backend->open(deviceName)};
if(err != ALC_NO_ERROR)
{
device = nullptr;
@@ -3978,7 +3978,7 @@ ALC_API ALCboolean ALC_APIENTRY alcCaptureCloseDevice(ALCdevice *device)
{ std::lock_guard<std::mutex> _{device->BackendLock};
if((device->Flags&DEVICE_RUNNING))
- V0(device->Backend,stop)();
+ device->Backend->stop();
device->Flags &= ~DEVICE_RUNNING;
}
@@ -4001,7 +4001,7 @@ ALC_API void ALC_APIENTRY alcCaptureStart(ALCdevice *device)
alcSetError(dev.get(), ALC_INVALID_DEVICE);
else if(!(dev->Flags&DEVICE_RUNNING))
{
- if(V0(dev->Backend,start)())
+ if(dev->Backend->start())
dev->Flags |= DEVICE_RUNNING;
else
{
@@ -4020,7 +4020,7 @@ ALC_API void ALC_APIENTRY alcCaptureStop(ALCdevice *device)
{
std::lock_guard<std::mutex> _{dev->BackendLock};
if((dev->Flags&DEVICE_RUNNING))
- V0(dev->Backend,stop)();
+ dev->Backend->stop();
dev->Flags &= ~DEVICE_RUNNING;
}
}
@@ -4036,8 +4036,9 @@ ALC_API void ALC_APIENTRY alcCaptureSamples(ALCdevice *device, ALCvoid *buffer,
ALCenum err{ALC_INVALID_VALUE};
{ std::lock_guard<std::mutex> _{dev->BackendLock};
- if(samples >= 0 && V0(dev->Backend,availableSamples)() >= (ALCuint)samples)
- err = V(dev->Backend,captureSamples)(buffer, samples);
+ BackendBase *backend{dev->Backend};
+ if(samples >= 0 && backend->availableSamples() >= (ALCuint)samples)
+ err = backend->captureSamples(buffer, samples);
}
if(err != ALC_NO_ERROR)
alcSetError(dev.get(), err);
@@ -4102,7 +4103,7 @@ ALC_API ALCdevice* ALC_APIENTRY alcLoopbackOpenDeviceSOFT(const ALCchar *deviceN
}
// Open the "backend"
- V(device->Backend,open)("Loopback");
+ device->Backend->open("Loopback");
{
ALCdevice *head{DeviceList.load()};
@@ -4149,9 +4150,9 @@ FORCE_ALIGN ALC_API void ALC_APIENTRY alcRenderSamplesSOFT(ALCdevice *device, AL
alcSetError(dev.get(), ALC_INVALID_VALUE);
else
{
- V0(dev->Backend,lock)();
+ dev->Backend->lock();
aluMixData(dev.get(), buffer, samples);
- V0(dev->Backend,unlock)();
+ dev->Backend->unlock();
}
}
@@ -4173,7 +4174,7 @@ ALC_API void ALC_APIENTRY alcDevicePauseSOFT(ALCdevice *device)
{
std::lock_guard<std::mutex> _{dev->BackendLock};
if((dev->Flags&DEVICE_RUNNING))
- V0(dev->Backend,stop)();
+ dev->Backend->stop();
dev->Flags &= ~DEVICE_RUNNING;
dev->Flags |= DEVICE_PAUSED;
}
@@ -4199,11 +4200,11 @@ ALC_API void ALC_APIENTRY alcDeviceResumeSOFT(ALCdevice *device)
if(dev->ContextList.load() == nullptr)
return;
- if(V0(dev->Backend,start)() == ALC_FALSE)
+ if(dev->Backend->start() == ALC_FALSE)
{
- V0(dev->Backend,lock)();
+ dev->Backend->lock();
aluHandleDisconnect(dev.get(), "Device start failure");
- V0(dev->Backend,unlock)();
+ dev->Backend->unlock();
alcSetError(dev.get(), ALC_INVALID_DEVICE);
return;
}
@@ -4261,7 +4262,7 @@ ALC_API ALCboolean ALC_APIENTRY alcResetDeviceSOFT(ALCdevice *device, const ALCi
* the connected state so lost devices can attempt recover.
*/
if((dev->Flags&DEVICE_RUNNING))
- V0(dev->Backend,stop)();
+ dev->Backend->stop();
dev->Flags &= ~DEVICE_RUNNING;
device->Connected.store(AL_TRUE);
@@ -4271,9 +4272,9 @@ ALC_API ALCboolean ALC_APIENTRY alcResetDeviceSOFT(ALCdevice *device, const ALCi
alcSetError(dev.get(), err);
if(err == ALC_INVALID_DEVICE)
{
- V0(dev->Backend,lock)();
+ dev->Backend->lock();
aluHandleDisconnect(dev.get(), "Device start failure");
- V0(dev->Backend,unlock)();
+ dev->Backend->unlock();
}
return ALC_FALSE;
}