add ability to set capture device

This commit is contained in:
ouwou
2022-11-08 04:01:54 -05:00
parent f97a6ff266
commit 0471688732
8 changed files with 101 additions and 11 deletions

View File

@@ -7,13 +7,18 @@
// clang-format on
AudioDevices::AudioDevices()
: m_playback(Gtk::ListStore::create(m_playback_columns)) {
: m_playback(Gtk::ListStore::create(m_playback_columns))
, m_capture(Gtk::ListStore::create(m_capture_columns)) {
}
Glib::RefPtr<Gtk::ListStore> AudioDevices::GetPlaybackDeviceModel() {
return m_playback;
}
Glib::RefPtr<Gtk::ListStore> AudioDevices::GetCaptureDeviceModel() {
return m_capture;
}
void AudioDevices::SetDevices(ma_device_info *pPlayback, ma_uint32 playback_count, ma_device_info *pCapture, ma_uint32 capture_count) {
m_playback->clear();
@@ -23,9 +28,18 @@ void AudioDevices::SetDevices(ma_device_info *pPlayback, ma_uint32 playback_coun
row[m_playback_columns.Name] = d.name;
row[m_playback_columns.DeviceID] = d.id;
}
m_capture->clear();
for (ma_uint32 i = 0; i < capture_count; i++) {
auto &d = pCapture[i];
auto row = *m_capture->append();
row[m_capture_columns.Name] = d.name;
row[m_capture_columns.DeviceID] = d.id;
}
}
std::optional<ma_device_id> AudioDevices::GetDeviceIDFromModel(const Gtk::TreeModel::iterator &iter) {
std::optional<ma_device_id> AudioDevices::GetPlaybackDeviceIDFromModel(const Gtk::TreeModel::iterator &iter) const {
if (iter) {
return static_cast<ma_device_id>((*iter)[m_playback_columns.DeviceID]);
} else {
@@ -33,8 +47,21 @@ std::optional<ma_device_id> AudioDevices::GetDeviceIDFromModel(const Gtk::TreeMo
}
}
std::optional<ma_device_id> AudioDevices::GetCaptureDeviceIDFromModel(const Gtk::TreeModel::iterator &iter) const {
if (iter) {
return static_cast<ma_device_id>((*iter)[m_capture_columns.DeviceID]);
} else {
return std::nullopt;
}
}
AudioDevices::PlaybackColumns::PlaybackColumns() {
add(Name);
add(DeviceID);
}
AudioDevices::CaptureColumns::CaptureColumns() {
add(Name);
add(DeviceID);
}
#endif