diff --git a/NEWS b/NEWS index 2d206e325..2cb980345 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,6 @@ ver 0.21.11 (not yet released) +* decoder + - wildmidi: log error if library initialization fails * output - alsa, osx: fix distortions with DSD_U32 and DoP on 32 bit CPUs * protocol diff --git a/src/decoder/plugins/WildmidiDecoderPlugin.cxx b/src/decoder/plugins/WildmidiDecoderPlugin.cxx index 37bb026e2..a1dbee4f2 100644 --- a/src/decoder/plugins/WildmidiDecoderPlugin.cxx +++ b/src/decoder/plugins/WildmidiDecoderPlugin.cxx @@ -21,6 +21,7 @@ #include "../DecoderAPI.hxx" #include "tag/Handler.hxx" #include "util/Domain.hxx" +#include "util/ScopeExit.hxx" #include "util/StringFormat.hxx" #include "fs/AllocatedPath.hxx" #include "fs/FileSystem.hxx" @@ -49,8 +50,14 @@ wildmidi_init(const ConfigBlock &block) utf8.c_str())); } - return WildMidi_Init(path.c_str(), wildmidi_audio_format.sample_rate, - 0) == 0; + WildMidi_ClearError(); + AtScopeExit() { WildMidi_ClearError(); }; + + if (WildMidi_Init(path.c_str(), wildmidi_audio_format.sample_rate, + 0) != 0) + throw PluginUnavailable(WildMidi_GetError()); + + return true; } static void