fix: refine linux voice runtime behavior
This commit is contained in:
@@ -816,10 +816,9 @@ pub async fn set_input_muted(muted: bool) -> Result<(), BridgeError> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Toggle self output-mute (speaker). Mutes locally *and* informs
|
||||
/// the server. The server uses this for the channel icon next to
|
||||
/// the client name; the local mute kicks in immediately even
|
||||
/// before the server acknowledges.
|
||||
/// Toggle self output-mute (speaker). Mutes locally, informs the
|
||||
/// server, and clamps local microphone transmit while speaker mute
|
||||
/// is active so the user cannot continue talking while deafened.
|
||||
pub async fn set_output_muted(muted: bool) -> Result<(), BridgeError> {
|
||||
runtime()
|
||||
.spawn(async move { session().set_self_muted(None, Some(muted)).await })
|
||||
@@ -1230,8 +1229,7 @@ impl From<chanora_core::AudioProcessingStats> for BridgeAudioProcessingStats {
|
||||
/// On non-Android targets or before a voice session opens the
|
||||
/// section is omitted. Per SDD-090 every field in that section is
|
||||
/// a device-side technical scalar — no PII admitted.
|
||||
#[frb(sync)]
|
||||
pub fn export_diagnostics() -> String {
|
||||
pub async fn export_diagnostics() -> String {
|
||||
let metadata = vec![
|
||||
(
|
||||
"crate_version".to_string(),
|
||||
@@ -1247,12 +1245,15 @@ pub fn export_diagnostics() -> String {
|
||||
// diagnostics snapshot from the process-global slot published
|
||||
// by AndroidVoiceUnit::open(). Returns None on non-Android and
|
||||
// before any voice session has opened.
|
||||
#[cfg(target_os = "android")]
|
||||
let android_audio_yaml =
|
||||
chanora_audio::mobile_voice_backend::current_android_audio_diagnostics()
|
||||
.map(|d| d.to_yaml_fragment());
|
||||
let audio_health = runtime().block_on(async { session().audio_processing_stats().await.ok() });
|
||||
let network_info = runtime().block_on(async { session().network_diagnostics_summary().await });
|
||||
let protocol_events = runtime().block_on(async { session().drain_protocol_events().await });
|
||||
#[cfg(not(target_os = "android"))]
|
||||
let android_audio_yaml: Option<String> = None;
|
||||
let audio_health = session().audio_processing_stats().await.ok();
|
||||
let network_info = session().network_diagnostics_summary().await;
|
||||
let protocol_events = session().drain_protocol_events().await;
|
||||
let android_audio_yaml = android_audio_yaml.map(|mut yaml| {
|
||||
if let Some(stats) = audio_health {
|
||||
yaml.push_str(&format!(
|
||||
|
||||
Reference in New Issue
Block a user