Add native self-hosted instance connection to fluxer_desktop
Trimmed monorepo checkout (fluxer_desktop + packages/voice_engine_v2 + tools/ci) with a "Connect to a Different Server" menu item and popout that lets the desktop app switch to any self-hosted Fluxer instance, plus fixes for well-known discovery on single-domain self-hosted deployments and a false-positive ERR_ABORTED on same-origin client redirects during the switch. Defaults to chat.fluxr.chat and uses an isolated userData directory from the official build.
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
// SPDX-License-Identifier: AGPL-3.0-or-later
|
||||
|
||||
use std::hint::black_box;
|
||||
|
||||
use criterion::{Criterion, criterion_group, criterion_main};
|
||||
use fluxer_mac_screen_capture::audio_pool::{
|
||||
MAC_AUDIO_POOL_CAP, MAX_FRAME_BYTES_PER_SLOT, MacAudioFramePool,
|
||||
};
|
||||
|
||||
fn bench_acquire_write_release_960_floats(c: &mut Criterion) {
|
||||
let pool = MacAudioFramePool::new(MAC_AUDIO_POOL_CAP, MAX_FRAME_BYTES_PER_SLOT)
|
||||
.expect("pool must build");
|
||||
let payload = vec![0xCC_u8; 960 * 4];
|
||||
c.bench_function("audio_pool/acquire_write_release/960_floats", |b| {
|
||||
b.iter(|| {
|
||||
let mut slot = pool
|
||||
.try_acquire()
|
||||
.expect("steady state single-thread never starves");
|
||||
slot.write(&payload).expect("write fits");
|
||||
black_box(slot.data_slice().len());
|
||||
drop(slot);
|
||||
});
|
||||
});
|
||||
assert_eq!(pool.stats().in_flight, 0);
|
||||
}
|
||||
|
||||
fn bench_acquire_release_only(c: &mut Criterion) {
|
||||
let pool = MacAudioFramePool::new(MAC_AUDIO_POOL_CAP, MAX_FRAME_BYTES_PER_SLOT)
|
||||
.expect("pool must build");
|
||||
c.bench_function("audio_pool/acquire_release", |b| {
|
||||
b.iter(|| {
|
||||
let slot = pool.try_acquire().expect("slot");
|
||||
black_box(slot.slot_index());
|
||||
});
|
||||
});
|
||||
assert_eq!(pool.stats().in_flight, 0);
|
||||
}
|
||||
|
||||
fn bench_acquire_write_into_external_parts(c: &mut Criterion) {
|
||||
let pool = MacAudioFramePool::new(MAC_AUDIO_POOL_CAP, MAX_FRAME_BYTES_PER_SLOT)
|
||||
.expect("pool must build");
|
||||
let payload = vec![0xCC_u8; 960 * 4];
|
||||
c.bench_function(
|
||||
"audio_pool/acquire_write_into_external_parts/960_floats",
|
||||
|b| {
|
||||
b.iter(|| {
|
||||
let mut slot = pool
|
||||
.try_acquire()
|
||||
.expect("steady state single-thread never starves");
|
||||
slot.write(&payload).expect("write fits");
|
||||
let (ptr, len, owned) = slot.into_external_parts();
|
||||
black_box((ptr, len));
|
||||
drop(owned);
|
||||
});
|
||||
},
|
||||
);
|
||||
assert_eq!(pool.stats().in_flight, 0);
|
||||
}
|
||||
|
||||
criterion_group!(
|
||||
benches,
|
||||
bench_acquire_write_release_960_floats,
|
||||
bench_acquire_release_only,
|
||||
bench_acquire_write_into_external_parts,
|
||||
);
|
||||
criterion_main!(benches);
|
||||
Reference in New Issue
Block a user