aboutsummaryrefslogtreecommitdiffstats
path: root/alc/alc.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'alc/alc.cpp')
-rw-r--r--alc/alc.cpp22
1 files changed, 8 insertions, 14 deletions
diff --git a/alc/alc.cpp b/alc/alc.cpp
index 1d299b1b..635f592c 100644
--- a/alc/alc.cpp
+++ b/alc/alc.cpp
@@ -2026,11 +2026,12 @@ static ALCenum UpdateDeviceParams(ALCdevice *device, const int *attrList)
device->UpdateSize, device->BufferSize);
try {
- if(device->Backend->reset() == false)
- return ALC_INVALID_DEVICE;
+ auto backend = device->Backend.get();
+ if(!backend->reset())
+ throw al::backend_exception{ALC_INVALID_DEVICE, "Device reset failure"};
}
catch(std::exception &e) {
- ERR("Device reset failed: %s\n", e.what());
+ aluHandleDisconnect(device, "%s", e.what());
return ALC_INVALID_DEVICE;
}
@@ -2365,12 +2366,11 @@ static ALCenum UpdateDeviceParams(ALCdevice *device, const int *attrList)
{
try {
auto backend = device->Backend.get();
- if(!backend->start())
- throw al::backend_exception{ALC_INVALID_DEVICE, "Backend error"};
+ backend->start();
device->Flags.set<DeviceRunning>();
}
catch(al::backend_exception& e) {
- WARN("Failed to start playback: %s\n", e.what());
+ aluHandleDisconnect(device, "%s", e.what());
return ALC_INVALID_DEVICE;
}
}
@@ -3392,8 +3392,6 @@ START_API_FUNC
if(err != ALC_NO_ERROR)
{
alcSetError(dev.get(), err);
- if(err == ALC_INVALID_DEVICE)
- aluHandleDisconnect(dev.get(), "Device update failure");
return nullptr;
}
@@ -3941,8 +3939,7 @@ START_API_FUNC
{
try {
auto backend = dev->Backend.get();
- if(!backend->start())
- throw al::backend_exception{ALC_INVALID_DEVICE, "Device start failure"};
+ backend->start();
dev->Flags.set<DeviceRunning>();
}
catch(al::backend_exception& e) {
@@ -4153,8 +4150,7 @@ START_API_FUNC
try {
auto backend = dev->Backend.get();
- if(!backend->start())
- throw al::backend_exception{ALC_INVALID_DEVICE, "Device start failure"};
+ backend->start();
dev->Flags.set<DeviceRunning>();
}
catch(al::backend_exception& e) {
@@ -4242,8 +4238,6 @@ START_API_FUNC
if LIKELY(err == ALC_NO_ERROR) return ALC_TRUE;
alcSetError(dev.get(), err);
- if(err == ALC_INVALID_DEVICE)
- aluHandleDisconnect(dev.get(), "Device start failure");
return ALC_FALSE;
}
END_API_FUNC