Skip to content

Commit 3411c41

Browse files
committed
Harmonize thread names and debug messages
1 parent 8d35b4b commit 3411c41

File tree

3 files changed

+50
-16
lines changed

3 files changed

+50
-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: 31 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,21 @@ 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+
let thread_name = format!("event-handler:{}", PLAYER_COUNTER.load(Ordering::Relaxed));
19+
20+
let builder = thread::Builder::new().name(thread_name.clone());
21+
22+
let thread_handle = match builder.spawn(move || loop {
1823
match player_events.blocking_recv() {
19-
None => break,
24+
None => {
25+
match thread::current().name() {
26+
Some(name) => debug!("<EventHandler> [{name}] thread finished"),
27+
None => debug!("<EventHandler> thread finished"),
28+
}
29+
30+
break;
31+
}
2032
Some(event) => {
2133
let mut env_vars = HashMap::new();
2234

@@ -245,18 +257,29 @@ impl EventHandler {
245257
}
246258
}
247259
}
248-
}));
260+
}) {
261+
Ok(handle) => {
262+
debug!("Created <EventHandler> [{thread_name}] thread");
263+
handle
264+
}
265+
Err(e) => {
266+
error!("Error creating <EventHandler> [{thread_name}] thread: {e}");
267+
exit(1);
268+
}
269+
};
249270

250-
Self { thread_handle }
271+
Self {
272+
thread_handle: Some(thread_handle),
273+
}
251274
}
252275
}
253276

254277
impl Drop for EventHandler {
255278
fn drop(&mut self) {
256-
debug!("Shutting down EventHandler thread ...");
279+
debug!("Shutting down <EventHandler> thread ...");
257280
if let Some(handle) = self.thread_handle.take() {
258281
if let Err(e) = handle.join() {
259-
error!("EventHandler thread Error: {:?}", e);
282+
error!("<EventHandler> thread Error: {:?}", e);
260283
}
261284
}
262285
}

0 commit comments

Comments
 (0)