output/osx: catch kAudioDevicePropertyHogMode errors
Our AudioObjectGetPropertyDataT() wrapper throws exception on error, and calling it from OSXOutput::Disable() can cause MPD crash due to std::terminate(). Closes https://github.com/MusicPlayerDaemon/MPD/issues/932
This commit is contained in:
parent
2bdf1b2284
commit
4f6c54ecb3
1
NEWS
1
NEWS
@ -1,5 +1,6 @@
|
|||||||
ver 0.21.26 (not yet released)
|
ver 0.21.26 (not yet released)
|
||||||
* output
|
* output
|
||||||
|
- osx: fix crash bug
|
||||||
- sles: support floating point samples
|
- sles: support floating point samples
|
||||||
|
|
||||||
ver 0.21.25 (2020/07/06)
|
ver 0.21.25 (2020/07/06)
|
||||||
|
@ -477,7 +477,7 @@ osx_output_set_buffer_size(AudioUnit au, AudioStreamBasicDescription desc)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
osx_output_hog_device(AudioDeviceID dev_id, bool hog)
|
osx_output_hog_device(AudioDeviceID dev_id, bool hog) noexcept
|
||||||
{
|
{
|
||||||
static constexpr AudioObjectPropertyAddress aopa = {
|
static constexpr AudioObjectPropertyAddress aopa = {
|
||||||
kAudioDevicePropertyHogMode,
|
kAudioDevicePropertyHogMode,
|
||||||
@ -485,8 +485,16 @@ osx_output_hog_device(AudioDeviceID dev_id, bool hog)
|
|||||||
kAudioObjectPropertyElementMaster
|
kAudioObjectPropertyElementMaster
|
||||||
};
|
};
|
||||||
|
|
||||||
pid_t hog_pid = AudioObjectGetPropertyDataT<pid_t>(dev_id,
|
pid_t hog_pid;
|
||||||
aopa);
|
|
||||||
|
try {
|
||||||
|
hog_pid = AudioObjectGetPropertyDataT<pid_t>(dev_id, aopa);
|
||||||
|
} catch (...) {
|
||||||
|
Log(LogLevel::DEBUG, std::current_exception(),
|
||||||
|
"Failed to query HogMode");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (hog) {
|
if (hog) {
|
||||||
if (hog_pid != -1) {
|
if (hog_pid != -1) {
|
||||||
FormatDebug(osx_output_domain,
|
FormatDebug(osx_output_domain,
|
||||||
|
Loading…
Reference in New Issue
Block a user