summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--mullvad-jni/src/lib.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/mullvad-jni/src/lib.rs b/mullvad-jni/src/lib.rs
index 3feb157745..284bea94d6 100644
--- a/mullvad-jni/src/lib.rs
+++ b/mullvad-jni/src/lib.rs
@@ -23,7 +23,7 @@ use parking_lot::RwLock;
use std::{
collections::HashMap,
path::{Path, PathBuf},
- sync::mpsc,
+ sync::{mpsc, Once},
thread,
};
use talpid_types::ErrorExt;
@@ -76,6 +76,8 @@ lazy_static! {
RwLock::new(HashMap::with_capacity(CLASSES_TO_LOAD.len()));
}
+static LOAD_CLASSES: Once = Once::new();
+
#[derive(Debug, err_derive::Error)]
pub enum Error {
#[error(display = "Failed to create VpnService tunnel provider")]
@@ -106,7 +108,7 @@ pub extern "system" fn Java_net_mullvad_mullvadvpn_MullvadDaemon_initialize(
) {
match *LOG_INIT_RESULT {
Ok(ref log_dir) => {
- load_classes(&env);
+ LOAD_CLASSES.call_once(|| load_classes(&env));
if let Err(error) = initialize(&env, &this, &vpnService, log_dir.clone()) {
log::error!("{}", error.display_chain());