aboutsummaryrefslogtreecommitdiff
path: root/src/background_loader.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/background_loader.rs')
-rw-r--r--src/background_loader.rs12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/background_loader.rs b/src/background_loader.rs
index ea9d331..111c943 100644
--- a/src/background_loader.rs
+++ b/src/background_loader.rs
@@ -14,7 +14,7 @@ pub enum LoaderMessage {
#[derive(Debug)]
pub struct PackageLoader {
receiver: Receiver<LoaderMessage>,
- thread_handle: thread::JoinHandle<()>,
+ thread_handle: Option<thread::JoinHandle<()>>,
}
impl PackageLoader {
@@ -35,13 +35,19 @@ impl PackageLoader {
PackageLoader {
receiver: rx,
- thread_handle,
+ thread_handle: Some(thread_handle),
}
}
pub fn try_recv(&self) -> Option<LoaderMessage> {
self.receiver.try_recv().ok()
}
+}
- //TODO: join thread back to main thread after packages were loaded
+impl Drop for PackageLoader {
+ fn drop(&mut self) {
+ if let Some(handle) = self.thread_handle.take() {
+ _ = handle.join();
+ }
+ }
}