public void Close(bool fInteractive) { iRefCount--; if (iClosingCount == 0) { pluginServer.ClearEvents(); } foreach (Plugin plugin in dicPluginInstances.Values) { if ((plugin.PluginInformation != null) && (fInteractive ^ (plugin.PluginInformation.PluginType != PluginType.Interactive))) { plugin.Close(EndCode.WindowClosed); } } if (!fInteractive) { plgIFilter = null; plgFilterCore = null; } if (iRefCount == 0) { dicPluginInstances.Clear(); pluginServer.Dispose(); pluginServer = null; } iClosingCount++; }
private void LoadStartupPlugins() { foreach (PluginInformation information in PluginInformations.Where(information => information.Enabled)) { if (information.PluginType == PluginType.Background) { Plugin plugin = Load(information, null); if (plugin != null) { if (plgIFilter == null) { plgIFilter = plugin.Instance as IFilter; } if (plgFilterCore == null) { plgFilterCore = plugin.Instance as IFilterCore; } } else { information.Enabled = false; } continue; } if ((information.PluginType == PluginType.BackgroundMultiple) && (Load(information, null) == null)) { information.Enabled = false; } } }
public void RefreshPluginAssembly(PluginAssembly pa, bool fStatic) { foreach (PluginInformation information in pa.PluginInformations) { if (!information.Enabled) { UnloadPluginInstance(information.PluginID, EndCode.Unloaded, fStatic); continue; } if (information.PluginType == PluginType.Background) { if (!PluginInstantialized(information.PluginID)) { Plugin plugin = Load(information, pa); if (plugin != null) { if (plgIFilter == null) { plgIFilter = plugin.Instance as IFilter; } if (plgFilterCore == null) { plgFilterCore = plugin.Instance as IFilterCore; } } else { information.Enabled = false; } } continue; } if (information.PluginType == PluginType.BackgroundMultiple) { if (!PluginInstantialized(information.PluginID) && (Load(information, pa) == null)) { information.Enabled = false; } } else if ((fStatic && (information.PluginType == PluginType.Static)) && !dicStaticPluginInstances.ContainsKey(information.PluginID)) { LoadStatics(information, pa, false); } } }
public void ClearFilterEngines() { plgIFilter = null; plgFilterCore = null; }