aboutsummaryrefslogtreecommitdiffstats
path: root/alc/backends/sndio.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'alc/backends/sndio.cpp')
-rw-r--r--alc/backends/sndio.cpp8
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;
}