Target is updated after all resolve tasks finish (#590)

Target is updated after all resolve tasks finish
This commit is contained in:
euzu
2026-02-15 17:31:14 +01:00
committed by GitHub
parent db5059bd9c
commit dd7d3c6fe3
9 changed files with 166 additions and 86 deletions
+2
View File
@@ -15,6 +15,8 @@ pub enum EventMessage {
LibraryScanProgress(LibraryScanSummary),
// Triggered when MetadataUpdateManager queue drains for an input
InputMetadataUpdatesCompleted(Arc<str>),
// Triggered when MetadataUpdateManager starts a new processing cycle for an input
InputMetadataUpdatesStarted(Arc<str>),
}
pub struct EventManager {
@@ -373,6 +373,11 @@ impl InputWorker {
last_queue_log_at = Instant::now()
.checked_sub(QUEUE_LOG_INTERVAL + Duration::from_secs(1))
.unwrap_or_else(Instant::now);
if let Some(app_state) = app_state_weak.as_ref().and_then(Weak::upgrade) {
app_state
.event_manager
.send_event(EventMessage::InputMetadataUpdatesStarted(input_name.clone()));
}
debug!("Background metadata update queue has entries for input {input_name}; starting processing");
}
+9
View File
@@ -29,6 +29,15 @@ impl UpdateGuard {
.map(|permit| UpdateGuardPermit { _permit: permit })
}
pub async fn acquire_playlist_lock(&self) -> Option<UpdateGuardPermit> {
self.playlist
.clone()
.acquire_owned()
.await
.ok()
.map(|permit| UpdateGuardPermit { _permit: permit })
}
pub fn try_library(&self) -> Option<UpdateGuardPermit> {
self.library
.clone()