Skip to content

Commit 697aed1

Browse files
authored
perf: debounce seek preparation and cache silence analysis (#13)
1 parent 322a074 commit 697aed1

9 files changed

Lines changed: 596 additions & 101 deletions

File tree

.github/workflows/release.yml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name: Release
22

3-
run-name: Release v${{ inputs.version }}
3+
run-name: Release Audio Orbit v${{ inputs.version }}
44

55
on:
66
workflow_dispatch:
@@ -49,11 +49,13 @@ jobs:
4949
}
5050
5151
$Tag = "v$Version"
52+
$ReleaseTitle = "Audio Orbit $Tag"
5253
$ReleaseBranch = "chore/release-$Tag"
5354
$IsPrerelease = "${{ inputs.prerelease }}".ToLowerInvariant() -eq "true"
5455
5556
"VERSION=$Version" >> $env:GITHUB_ENV
5657
"TAG=$Tag" >> $env:GITHUB_ENV
58+
"RELEASE_TITLE=$ReleaseTitle" >> $env:GITHUB_ENV
5759
"RELEASE_BRANCH=$ReleaseBranch" >> $env:GITHUB_ENV
5860
"IS_PRERELEASE=$($IsPrerelease.ToString().ToLowerInvariant())" >> $env:GITHUB_ENV
5961
@@ -274,7 +276,7 @@ jobs:
274276
"release", "create", $env:TAG, $env:ASSET,
275277
"--repo", "${{ github.repository }}",
276278
"--target", $env:MERGED_SHA,
277-
"--title", $env:TAG,
279+
"--title", $env:RELEASE_TITLE,
278280
"--generate-notes"
279281
)
280282

src/app/core.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ impl AudioOrbitApp {
3131
crossfade_started_for_path: None,
3232
pending_track_switch: None,
3333
pending_prepared_track_receiver: None,
34+
pending_seek_prepare: None,
35+
pending_fast_seek: None,
36+
last_fast_seek_started_at: None,
37+
silence_analysis_cache: BTreeMap::new(),
3438
pending_folder_scan_receiver: None,
3539
pending_profile_apply_at: None,
3640
profile_apply_applied_until: None,
@@ -114,6 +118,10 @@ impl AudioOrbitApp {
114118
crossfade_started_for_path: None,
115119
pending_track_switch: None,
116120
pending_prepared_track_receiver: None,
121+
pending_seek_prepare: None,
122+
pending_fast_seek: None,
123+
last_fast_seek_started_at: None,
124+
silence_analysis_cache: BTreeMap::new(),
117125
pending_folder_scan_receiver: None,
118126
pending_profile_apply_at: None,
119127
profile_apply_applied_until: None,

src/app/dev_metrics.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,12 @@ impl AudioOrbitApp {
359359
if self.pending_prepared_track_receiver.is_some() {
360360
jobs.push("audio prepare".to_owned());
361361
}
362+
if self.pending_fast_seek.is_some() {
363+
jobs.push("seek restart debounce".to_owned());
364+
}
365+
if self.pending_seek_prepare.is_some() {
366+
jobs.push("seek prepare debounce".to_owned());
367+
}
362368
if self.pending_folder_scan_receiver.is_some() {
363369
jobs.push("folder scan".to_owned());
364370
}

src/app/lifecycle.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,8 @@ impl AudioOrbitApp {
7474

7575
fn has_background_ui_work(&self) -> bool {
7676
self.pending_prepared_track_receiver.is_some()
77+
|| self.pending_fast_seek.is_some()
78+
|| self.pending_seek_prepare.is_some()
7779
|| self.pending_folder_scan_receiver.is_some()
7880
|| self.update_check_receiver.is_some()
7981
|| self.update_install_receiver.is_some()
@@ -107,6 +109,8 @@ impl eframe::App for AudioOrbitApp {
107109
self.refresh_radio_title_periodically();
108110
self.process_pending_profile_apply();
109111
self.process_folder_scan_events();
112+
self.process_pending_fast_seek();
113+
self.process_pending_seek_prepare();
110114
self.process_prepared_track_playback();
111115
self.process_pending_track_switch();
112116
self.update_playback_status();

0 commit comments

Comments
 (0)