diff options
Diffstat (limited to 'alc/backends/dsound.cpp')
-rw-r--r-- | alc/backends/dsound.cpp | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/alc/backends/dsound.cpp b/alc/backends/dsound.cpp index 68b63a50..24fba98c 100644 --- a/alc/backends/dsound.cpp +++ b/alc/backends/dsound.cpp @@ -169,7 +169,7 @@ struct DSoundPlayback final : public BackendBase { void open(const ALCchar *name) override; bool reset() override; - bool start() override; + void start() override; void stop() override; IDirectSound *mDS{nullptr}; @@ -563,19 +563,16 @@ retry_open: return true; } -bool DSoundPlayback::start() +void DSoundPlayback::start() { try { mKillNow.store(false, std::memory_order_release); mThread = std::thread{std::mem_fn(&DSoundPlayback::mixerProc), this}; - return true; } catch(std::exception& e) { - ERR("Failed to start mixing thread: %s\n", e.what()); + throw al::backend_exception{ALC_INVALID_DEVICE, "Failed to start mixing thread: %s", + e.what()}; } - catch(...) { - } - return false; } void DSoundPlayback::stop() @@ -593,7 +590,7 @@ struct DSoundCapture final : public BackendBase { ~DSoundCapture() override; void open(const ALCchar *name) override; - bool start() override; + void start() override; void stop() override; ALCenum captureSamples(al::byte *buffer, ALCuint samples) override; ALCuint availableSamples() override; @@ -762,16 +759,11 @@ void DSoundCapture::open(const ALCchar *name) mDevice->DeviceName = name; } -bool DSoundCapture::start() +void DSoundCapture::start() { - HRESULT hr{mDSCbuffer->Start(DSCBSTART_LOOPING)}; + const HRESULT hr{mDSCbuffer->Start(DSCBSTART_LOOPING)}; if(FAILED(hr)) - { - ERR("start failed: 0x%08lx\n", hr); - aluHandleDisconnect(mDevice, "Failure starting capture: 0x%lx", hr); - return false; - } - return true; + throw al::backend_exception{ALC_INVALID_DEVICE, "Failure starting capture: 0x%lx", hr}; } void DSoundCapture::stop() |