diff --git a/src/output/plugins/wasapi/WasapiOutputPlugin.cxx b/src/output/plugins/wasapi/WasapiOutputPlugin.cxx index 78c7c461f..ea470f1a1 100644 --- a/src/output/plugins/wasapi/WasapiOutputPlugin.cxx +++ b/src/output/plugins/wasapi/WasapiOutputPlugin.cxx @@ -804,8 +804,6 @@ void WasapiOutput::EnumerateDevices() { return; } - HRESULT result; - const auto device_collection = EnumAudioEndpoints(*enumerator); const UINT count = GetCount(*device_collection); @@ -838,20 +836,19 @@ WasapiOutput::GetDevice(unsigned int index) ComPtr WasapiOutput::SearchDevice(std::string_view name) { - if (!SafeTry([this]() { EnumerateDevices(); })) { - return nullptr; + const auto device_collection = EnumAudioEndpoints(*enumerator); + + const UINT count = GetCount(*device_collection); + for (UINT i = 0; i < count; ++i) { + auto d = Item(*device_collection, i); + + const auto property_store = OpenPropertyStore(*d); + auto n = GetString(*property_store, PKEY_Device_FriendlyName); + if (n != nullptr && name.compare(n) == 0) + return d; } - auto iter = - std::find_if(device_desc.cbegin(), device_desc.cend(), - [&name](const auto &desc) { return desc.second == name; }); - if (iter == device_desc.cend()) { - FormatError(wasapi_output_domain, "Device %.*s not founded.", - int(name.size()), name.data()); - return nullptr; - } - FormatInfo(wasapi_output_domain, "Select device \"%u\" \"%s\"", iter->first, - iter->second.c_str()); - return GetDevice(iter->first); + + return nullptr; } static bool wasapi_output_test_default_device() { return true; }