mirror of
https://github.com/rojo-rbx/rojo.git
synced 2026-04-22 21:55:15 +00:00
Make ChangeProcessor abort gracefully on RecvError
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
|
|
||||||
use crossbeam_channel::{select, Receiver, Sender};
|
use crossbeam_channel::{select, Receiver, RecvError, Sender};
|
||||||
use jod_thread::JoinHandle;
|
use jod_thread::JoinHandle;
|
||||||
use rbx_dom_weak::RbxId;
|
use rbx_dom_weak::RbxId;
|
||||||
|
|
||||||
@@ -34,7 +34,7 @@ pub struct ChangeProcessor {
|
|||||||
///
|
///
|
||||||
/// Allowed to be unused because dropping this value has side effects.
|
/// Allowed to be unused because dropping this value has side effects.
|
||||||
#[allow(unused)]
|
#[allow(unused)]
|
||||||
job_thread: JoinHandle<()>,
|
job_thread: JoinHandle<Result<(), RecvError>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ChangeProcessor {
|
impl ChangeProcessor {
|
||||||
@@ -71,19 +71,17 @@ impl ChangeProcessor {
|
|||||||
loop {
|
loop {
|
||||||
select! {
|
select! {
|
||||||
recv(vfs_receiver) -> event => {
|
recv(vfs_receiver) -> event => {
|
||||||
task.handle_vfs_event(event.unwrap());
|
task.handle_vfs_event(event?);
|
||||||
},
|
},
|
||||||
recv(tree_mutation_receiver) -> patch_set => {
|
recv(tree_mutation_receiver) -> patch_set => {
|
||||||
task.handle_tree_event(patch_set.unwrap());
|
task.handle_tree_event(patch_set?);
|
||||||
},
|
},
|
||||||
recv(shutdown_receiver) -> _ => {
|
recv(shutdown_receiver) -> _ => {
|
||||||
log::trace!("ChangeProcessor shutdown signal received...");
|
log::trace!("ChangeProcessor shutdown signal received...");
|
||||||
break;
|
return Ok(());
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log::trace!("ChangeProcessor thread stopped");
|
|
||||||
})
|
})
|
||||||
.expect("Could not start ChangeProcessor thread");
|
.expect("Could not start ChangeProcessor thread");
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user