Skip to content

Commit 0e3ffe5

Browse files
committed
Harmonize thread names and debug messages
1 parent 8d35b4b commit 0e3ffe5

File tree

3 files changed

+54
-16
lines changed

3 files changed

+54
-16
lines changed

playback/src/player.rs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ struct PlayerInternal {
8181
player_id: usize,
8282
}
8383

84-
static PLAYER_COUNTER: AtomicUsize = AtomicUsize::new(0);
84+
pub static PLAYER_COUNTER: AtomicUsize = AtomicUsize::new(0);
8585

8686
enum PlayerCommand {
8787
Load {
@@ -507,11 +507,11 @@ impl Player {
507507

508508
impl Drop for Player {
509509
fn drop(&mut self) {
510-
debug!("Shutting down player thread ...");
510+
debug!("Shutting down <Player> thread ...");
511511
self.commands = None;
512512
if let Some(handle) = self.thread_handle.take() {
513513
if let Err(e) = handle.join() {
514-
error!("Player thread Error: {:?}", e);
514+
error!("<Player> thread Error: {:?}", e);
515515
}
516516
}
517517
}
@@ -1953,7 +1953,12 @@ impl PlayerInternal {
19531953
let load_handles_clone = self.load_handles.clone();
19541954
let handle = tokio::runtime::Handle::current();
19551955

1956-
let thread_name = format!("loader:{}", spotify_id.to_uri().unwrap_or_default());
1956+
// The player increments the player id when it gets it...
1957+
let thread_name = format!(
1958+
"loader:{}:{}",
1959+
PLAYER_COUNTER.load(Ordering::Relaxed).saturating_sub(1),
1960+
spotify_id.to_uri().unwrap_or_default()
1961+
);
19571962

19581963
let builder = thread::Builder::new().name(thread_name.clone());
19591964

playback/src/resampler.rs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ use std::{
22
collections::{vec_deque, VecDeque},
33
marker::Send,
44
process::exit,
5+
sync::atomic::Ordering,
56
sync::mpsc,
67
thread,
78
};
89

910
use crate::{
1011
config::{InterpolationQuality, SampleRate},
12+
player::PLAYER_COUNTER,
1113
RESAMPLER_INPUT_SIZE, SAMPLE_RATE as SOURCE_SAMPLE_RATE,
1214
};
1315

@@ -287,8 +289,8 @@ impl ResampleWorker {
287289
}
288290
ResampleTask::Terminate => {
289291
match thread::current().name() {
290-
Some(name) => debug!("drop <ResampleWorker> [{name}] thread"),
291-
None => debug!("drop <ResampleWorker> thread"),
292+
Some(name) => debug!("<ResampleWorker> [{name}] thread finished"),
293+
None => debug!("<ResampleWorker> thread finished"),
292294
}
293295

294296
break;
@@ -353,6 +355,7 @@ impl ResampleWorker {
353355

354356
impl Drop for ResampleWorker {
355357
fn drop(&mut self) {
358+
debug!("Shutting down <ResampleWorker> thread ...");
356359
self.task_sender
357360
.take()
358361
.and_then(|sender| sender.send(ResampleTask::Terminate).ok());
@@ -399,8 +402,11 @@ impl StereoInterleavedResampler {
399402
_ => {
400403
debug!("Interpolation Quality: {interpolation_quality}");
401404

402-
let left_thread_name = "resampler:left".to_string();
403-
let right_thread_name = "resampler:right".to_string();
405+
// The player increments the player id when it gets it...
406+
let player_id = PLAYER_COUNTER.load(Ordering::Relaxed).saturating_sub(1);
407+
408+
let left_thread_name = format!("resampler:{player_id}:left");
409+
let right_thread_name = format!("resampler:{player_id}:right");
404410

405411
match interpolation_quality {
406412
InterpolationQuality::Low => {

src/player_event_handler.rs

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use log::{debug, error, warn};
22

3-
use std::{collections::HashMap, process::Command, thread};
3+
use std::{collections::HashMap, process::exit, process::Command, sync::atomic::Ordering, thread};
44

55
use librespot::{
66
metadata::audio::UniqueFields,
7-
playback::player::{PlayerEvent, PlayerEventChannel, SinkStatus},
7+
playback::player::{PlayerEvent, PlayerEventChannel, SinkStatus, PLAYER_COUNTER},
88
};
99

1010
pub struct EventHandler {
@@ -14,9 +14,25 @@ pub struct EventHandler {
1414
impl EventHandler {
1515
pub fn new(mut player_events: PlayerEventChannel, onevent: &str) -> Self {
1616
let on_event = onevent.to_string();
17-
let thread_handle = Some(thread::spawn(move || loop {
17+
18+
// The player increments the player id when it gets it...
19+
let thread_name = format!(
20+
"event-handler:{}",
21+
PLAYER_COUNTER.load(Ordering::Relaxed).saturating_sub(1)
22+
);
23+
24+
let builder = thread::Builder::new().name(thread_name.clone());
25+
26+
let thread_handle = match builder.spawn(move || loop {
1827
match player_events.blocking_recv() {
19-
None => break,
28+
None => {
29+
match thread::current().name() {
30+
Some(name) => debug!("<EventHandler> [{name}] thread finished"),
31+
None => debug!("<EventHandler> thread finished"),
32+
}
33+
34+
break;
35+
}
2036
Some(event) => {
2137
let mut env_vars = HashMap::new();
2238

@@ -245,18 +261,29 @@ impl EventHandler {
245261
}
246262
}
247263
}
248-
}));
264+
}) {
265+
Ok(handle) => {
266+
debug!("Created <EventHandler> [{thread_name}] thread");
267+
handle
268+
}
269+
Err(e) => {
270+
error!("Error creating <EventHandler> [{thread_name}] thread: {e}");
271+
exit(1);
272+
}
273+
};
249274

250-
Self { thread_handle }
275+
Self {
276+
thread_handle: Some(thread_handle),
277+
}
251278
}
252279
}
253280

254281
impl Drop for EventHandler {
255282
fn drop(&mut self) {
256-
debug!("Shutting down EventHandler thread ...");
283+
debug!("Shutting down <EventHandler> thread ...");
257284
if let Some(handle) = self.thread_handle.take() {
258285
if let Err(e) = handle.join() {
259-
error!("EventHandler thread Error: {:?}", e);
286+
error!("<EventHandler> thread Error: {:?}", e);
260287
}
261288
}
262289
}

0 commit comments

Comments
 (0)