diff --git a/backend/src/processing/processor/playlist.rs b/backend/src/processing/processor/playlist.rs index dcdd4f4dd..d214d9142 100644 --- a/backend/src/processing/processor/playlist.rs +++ b/backend/src/processing/processor/playlist.rs @@ -323,11 +323,14 @@ fn map_playlist_counter(target: &ConfigTarget, playlist: &mut [PlaylistGroup]) { for mapping in mappings { if let Some(counter_list) = &mapping.t_counter { for counter in counter_list { + // fresh per target/call. No shared atomic, no cross-refresh carry-over. + let mut current = counter.start; for plg in &mut *playlist { for channel in &mut plg.channels { let provider = ValueProvider { pli: channel, match_as_ascii: mapping.match_as_ascii }; if counter.filter.filter(&provider) { - let cntval = counter.value.fetch_add(1, core::sync::atomic::Ordering::AcqRel); + let cntval = current; + current += 1; let padded_cntval = if counter.padding > 0 { format!("{:0width$}", cntval, width = counter.padding as usize) } else { diff --git a/frontend/src/app/components/playlist/mapper_counter_view.rs b/frontend/src/app/components/playlist/mapper_counter_view.rs index 2030ca84a..4329820f1 100644 --- a/frontend/src/app/components/playlist/mapper_counter_view.rs +++ b/frontend/src/app/components/playlist/mapper_counter_view.rs @@ -1,6 +1,5 @@ use crate::i18n::use_translation; use shared::model::MappingCounter; -use std::sync::atomic::Ordering; use yew::prelude::*; #[derive(Properties, PartialEq, Clone)] @@ -32,7 +31,7 @@ pub fn MapperCounterView(props: &MapperCounterViewProps) -> Html {