From b17a216fec0ab8d78f953522e1592881cc92b80f Mon Sep 17 00:00:00 2001 From: izzy Meyer Date: Thu, 26 Mar 2026 13:13:09 -0500 Subject: [PATCH 1/4] update miniaudio submodule --- subprojects/miniaudio | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/subprojects/miniaudio b/subprojects/miniaudio index 350784a9..9634bedb 160000 --- a/subprojects/miniaudio +++ b/subprojects/miniaudio @@ -1 +1 @@ -Subproject commit 350784a9467a79d0fa65802132668e5afbcf3777 +Subproject commit 9634bedb5b5a2ca38c1ee7108a9358a4e233f14d From bc58bf79b57c500a9eb3322b42a7939467de3a45 Mon Sep 17 00:00:00 2001 From: izzy Meyer Date: Thu, 26 Mar 2026 13:43:49 -0500 Subject: [PATCH 2/4] grab fallback for non-default-having audio backends --- src/audio/devices.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/audio/devices.cpp b/src/audio/devices.cpp index dfb71640..4fa2f9fb 100644 --- a/src/audio/devices.cpp +++ b/src/audio/devices.cpp @@ -31,9 +31,11 @@ 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; - if (d.isDefault) { - m_default_playback_iter = row; - SetActivePlaybackDevice(row); + // 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); } } @@ -46,9 +48,11 @@ void AudioDevices::SetDevices(ma_device_info *pPlayback, ma_uint32 playback_coun row[m_capture_columns.Name] = d.name; row[m_capture_columns.DeviceID] = d.id; - if (d.isDefault) { - m_default_capture_iter = row; - SetActiveCaptureDevice(row); + // 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); } } From fedf119268c9aa247bea52c7057993fee913dd89 Mon Sep 17 00:00:00 2001 From: izzy Meyer Date: Thu, 26 Mar 2026 14:55:21 -0500 Subject: [PATCH 3/4] fallback correctly rather than overriding --- src/audio/devices.cpp | 43 +++++++++++++++++++++++++++++++++---------- 1 file changed, 33 insertions(+), 10 deletions(-) diff --git a/src/audio/devices.cpp b/src/audio/devices.cpp index 4fa2f9fb..bc5bd767 100644 --- a/src/audio/devices.cpp +++ b/src/audio/devices.cpp @@ -23,6 +23,11 @@ Glib::RefPtr 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]; @@ -31,14 +36,23 @@ 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; - // 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); + if (d.isDefault) { + m_default_playback_iter = row; + SetActivePlaybackDevice(row); } } + // 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++) { @@ -48,14 +62,23 @@ void AudioDevices::SetDevices(ma_device_info *pPlayback, ma_uint32 playback_coun row[m_capture_columns.Name] = d.name; row[m_capture_columns.DeviceID] = d.id; - // 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); + if (d.isDefault) { + m_default_capture_iter = row; + SetActiveCaptureDevice(row); } } + // 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"); } From fd2983f1f5cb17fa6d85e77c1b91641d074ae5e8 Mon Sep 17 00:00:00 2001 From: izzy Meyer Date: Sun, 29 Mar 2026 16:36:43 -0500 Subject: [PATCH 4/4] remove boringssl hack for openbsd --- CMakeLists.txt | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2c8e8d99..304c7181 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,6 +19,7 @@ find_package(CURL) find_package(ZLIB REQUIRED) find_package(SQLite3 REQUIRED) find_package(gtkmm REQUIRED) +find_package(OpenSSL REQUIRED) set(USE_TLS TRUE) set(USE_OPEN_SSL TRUE) @@ -182,14 +183,6 @@ if (ENABLE_VOICE) set(TESTING OFF CACHE BOOL "" FORCE) set(MLS_CXX_NAMESPACE "mlspp" CACHE STRING "" FORCE) set(CMAKE_EXPORT_PACKAGE_REGISTRY OFF CACHE BOOL "" FORCE) - if (CMAKE_SYSTEM_NAME STREQUAL "OpenBSD") - message(STATUS "Forcing mlspp to use BoringSSL on OpenBSD") - set(REQUIRE_BORINGSSL ON CACHE BOOL "" FORCE) - set(OPENSSL_ROOT_DIR "/usr/local/eboringssl" CACHE PATH "" FORCE) - set(OPENSSL_INCLUDE_DIR "/usr/local/eboringssl/include" CACHE PATH "" FORCE) - set(OPENSSL_CRYPTO_LIBRARY "/usr/local/eboringssl/lib/libcrypto.a" CACHE FILEPATH "" FORCE) - set(OPENSSL_SSL_LIBRARY "/usr/local/eboringssl/lib/libssl.a" CACHE FILEPATH "" FORCE) - endif() add_subdirectory(subprojects/mlspp EXCLUDE_FROM_ALL) if (NOT TARGET MLSPP::mlspp) add_library(MLSPP::mlspp ALIAS mlspp) @@ -290,4 +283,4 @@ if (NOT (APPLE OR WIN32)) ${CMAKE_CURRENT_SOURCE_DIR}/res/desktop/icon.svg DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications ) -endif() \ No newline at end of file +endif()