Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions src/audio/devices.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ Glib::RefPtr<Gtk::ListStore> AudioDevices::GetCaptureDeviceModel() {

void AudioDevices::SetDevices(ma_device_info *pPlayback, ma_uint32 playback_count, ma_device_info *pCapture, ma_uint32 capture_count) {
m_playback->clear();
// reset state
m_default_playback_iter = {};
m_active_playback_iter = {};
m_default_capture_iter = {};
m_active_capture_iter = {};

for (ma_uint32 i = 0; i < playback_count; i++) {
auto &d = pPlayback[i];
Expand All @@ -37,6 +42,17 @@ void AudioDevices::SetDevices(ma_device_info *pPlayback, ma_uint32 playback_coun
}
}

// some platforms don't have a default playback device, so fallback
if (!m_default_playback_iter && !m_playback->children().empty()) {
auto first = m_playback->children().begin();
m_default_playback_iter = first;
SetActivePlaybackDevice(first);

spdlog::get("audio")->warn(
"No default playback device reported; falling back to first device."
);
}

m_capture->clear();

for (ma_uint32 i = 0; i < capture_count; i++) {
Expand All @@ -52,6 +68,17 @@ void AudioDevices::SetDevices(ma_device_info *pPlayback, ma_uint32 playback_coun
}
}

// some platforms don't have a default capture device, so fallback
if (!m_default_capture_iter && !m_capture->children().empty()) {
auto first = m_capture->children().begin();
m_default_capture_iter = first;
SetActiveCaptureDevice(first);

spdlog::get("audio")->warn(
"No default capture device reported; falling back to first device."
);
}

if (!m_default_playback_iter) {
spdlog::get("audio")->warn("No default playback device found");
}
Expand Down
2 changes: 1 addition & 1 deletion subprojects/miniaudio
Loading