January 2018
Beginner to intermediate
454 pages
10h 8m
English
We'll create a new Player structure to wrap the event loop. The player will be usable from the main thread to control the music. Here's the structure itself:
pub struct Player { app_state: Arc<Mutex<super::State>>, event_loop: EventLoop, }
And here's the start of its constructor:
impl Player { pub(crate) fn new(app_state: Arc<Mutex<super::State>>) -> Self { let event_loop = EventLoop::new(); { let app_state = app_state.clone(); let event_loop = event_loop.clone(); thread::spawn(move || { // … }); } Player { app_state, event_loop, } } }
We start by creating a new event loop. Then, we start a new thread. We used a new scope to avoid having to rename the variables that will be sent to the thread because these variables are used ...