cubeb: Allow to select the default device even if cubeb_enumerate_devices fails

This commit is contained in:
mitoposter 2025-03-15 09:19:42 +00:00
parent 8b5cafa98e
commit 9ba1a49bb0
2 changed files with 12 additions and 12 deletions

View file

@ -183,17 +183,17 @@ void CubebAPI::Destroy()
std::vector<IAudioAPI::DeviceDescriptionPtr> CubebAPI::GetDevices()
{
cubeb_device_collection devices;
if (cubeb_enumerate_devices(s_context, CUBEB_DEVICE_TYPE_OUTPUT, &devices) != CUBEB_OK)
return {};
std::vector<DeviceDescriptionPtr> result;
result.reserve(devices.count + 1); // Reserve space for the default device
// Add the default device to the list
auto defaultDevice = std::make_shared<CubebDeviceDescription>(nullptr, "default", L"Default Device");
result.emplace_back(defaultDevice);
cubeb_device_collection devices;
if (cubeb_enumerate_devices(s_context, CUBEB_DEVICE_TYPE_OUTPUT, &devices) != CUBEB_OK)
return result;
result.reserve(devices.count + 1); // The default device already occupies one element
for (size_t i = 0; i < devices.count; ++i)
{
// const auto& device = devices.device[i];

View file

@ -175,17 +175,17 @@ void CubebInputAPI::Destroy()
std::vector<IAudioInputAPI::DeviceDescriptionPtr> CubebInputAPI::GetDevices()
{
cubeb_device_collection devices;
if (cubeb_enumerate_devices(s_context, CUBEB_DEVICE_TYPE_INPUT, &devices) != CUBEB_OK)
return {};
std::vector<DeviceDescriptionPtr> result;
result.reserve(devices.count + 1); // Reserve space for the default device
// Add the default device to the list
auto defaultDevice = std::make_shared<CubebDeviceDescription>(nullptr, "default", L"Default Device");
result.emplace_back(defaultDevice);
cubeb_device_collection devices;
if (cubeb_enumerate_devices(s_context, CUBEB_DEVICE_TYPE_INPUT, &devices) != CUBEB_OK)
return result;
result.reserve(devices.count + 1); // The default device already occupies one element
for (size_t i = 0; i < devices.count; ++i)
{
// const auto& device = devices.device[i];