diff options
Diffstat (limited to 'alc/backends/sndio.cpp')
-rw-r--r-- | alc/backends/sndio.cpp | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/alc/backends/sndio.cpp b/alc/backends/sndio.cpp index 41bdb73b..a26eeaa6 100644 --- a/alc/backends/sndio.cpp +++ b/alc/backends/sndio.cpp @@ -122,10 +122,14 @@ void SndioPlayback::open(const char *name) throw al::backend_exception{al::backend_error::NoDevice, "Device name \"%s\" not found", name}; - mSndHandle = sio_open(nullptr, SIO_PLAY, 0); - if(mSndHandle == nullptr) + sio_hdl *sndHandle{sio_open(nullptr, SIO_PLAY, 0)}; + if(!sndHandle) throw al::backend_exception{al::backend_error::NoDevice, "Could not open backend device"}; + if(mSndHandle) + sio_close(mSndHandle); + mSndHandle = sndHandle; + mDevice->DeviceName = name; } |