Refcount entries in snapshot context, moving towards sharing

This commit is contained in:
Lucien Greathouse
2019-11-25 15:11:58 -08:00
parent c3f6a17bae
commit 15cbbacc2f
2 changed files with 6 additions and 5 deletions

View File

@@ -1,7 +1,7 @@
//! Initialization routines that are used by more than one Rojo command or
//! utility.
use std::path::Path;
use std::{path::Path, sync::Arc};
use rbx_dom_weak::RbxInstanceProperties;
@@ -41,7 +41,8 @@ pub fn start<F: VfsFetcher>(
// If the project file defines no plugins, then there's no need to
// initialize the snapshot plugin context.
if !project.plugins.is_empty() {
snapshot_context.plugin_context = Some(SnapshotPluginContext::new(&project.plugins));
snapshot_context.plugin_context =
Some(Arc::new(SnapshotPluginContext::new(&project.plugins)));
}
}

View File

@@ -1,16 +1,16 @@
use std::{fmt, fs, ops::Deref, path::Path};
use std::{fmt, fs, ops::Deref, path::Path, sync::Arc};
use rlua::{Lua, RegistryKey};
use super::error::SnapshotError;
#[derive(Debug)]
#[derive(Debug, Clone)]
pub struct InstanceSnapshotContext {
/// Holds all the state needed to run user plugins as part of the snapshot
/// process.
///
/// If this is None, then plugins should not be evaluated at all.
pub plugin_context: Option<SnapshotPluginContext>,
pub plugin_context: Option<Arc<SnapshotPluginContext>>,
}
impl Default for InstanceSnapshotContext {