From b1849e7fde2c3d0e543c8855fd4a1fd85f23fe30 Mon Sep 17 00:00:00 2001 From: BlueWall Date: Tue, 11 Dec 2012 17:03:42 -0500 Subject: Hide some console output when initializing addin repository We do this in OpenSim.exe to hide output when unmanaged dll are scanned by mono addins. Libomv has hard-coded path to "." for the openjpeg libraries, causing output to the console when they are scanned. We will cover this up for now, then look at getting libomv to look for the libs outside the "." later. --- OpenSim/Framework/PluginManager.cs | 2 ++ OpenSim/Server/Base/ServerUtils.cs | 27 +++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/OpenSim/Framework/PluginManager.cs b/OpenSim/Framework/PluginManager.cs index 23d5945..00263f5 100644 --- a/OpenSim/Framework/PluginManager.cs +++ b/OpenSim/Framework/PluginManager.cs @@ -92,6 +92,7 @@ namespace OpenSim.Framework // Attempt to install the plugin disabled if (Install(ps, pack) == true) { + MainConsole.Instance.Output("Ignore the following error..."); PluginRegistry.Update(ps); Addin addin = PluginRegistry.GetAddin(aentry.Addin.Id); PluginRegistry.DisableAddin(addin.Id); @@ -479,6 +480,7 @@ namespace OpenSim.Framework ConsoleProgressStatus ps = new ConsoleProgressStatus(false); if (!AddinManager.AddinEngine.IsAddinLoaded(addin.Id)) { + MainConsole.Instance.Output("Ignore the following error..."); AddinManager.Registry.Rebuild(ps); AddinManager.AddinEngine.LoadAddin(ps, addin.Id); } diff --git a/OpenSim/Server/Base/ServerUtils.cs b/OpenSim/Server/Base/ServerUtils.cs index 31b0446..d06d612 100644 --- a/OpenSim/Server/Base/ServerUtils.cs +++ b/OpenSim/Server/Base/ServerUtils.cs @@ -89,12 +89,39 @@ namespace OpenSim.Server.Base Config = config; Registry = new AddinRegistry(registryPath, "."); + suppress_console_output_(true); AddinManager.Initialize(registryPath); + suppress_console_output_(false); AddinManager.Registry.Update(); CommandManager commandmanager = new CommandManager(Registry); AddinManager.AddExtensionNodeHandler("/Robust/Connector", OnExtensionChanged); } + private static TextWriter prev_console_; + // Temporarily masking the errors reported on start + // This is caused by a non-managed dll in the ./bin dir + // when the registry is initialized. The dll belongs to + // libomv, which has a hard-coded path to "." for pinvoke + // to load the openjpeg dll + // + // Will look for a way to fix, but for now this keeps the + // confusion to a minimum. this was copied from our region + // plugin loader, we have been doing this in there for a long time. + // + public void suppress_console_output_(bool save) + { + if (save) + { + prev_console_ = System.Console.Out; + System.Console.SetOut(new StreamWriter(Stream.Null)); + } + else + { + if (prev_console_ != null) + System.Console.SetOut(prev_console_); + } + } + private void OnExtensionChanged(object s, ExtensionNodeEventArgs args) { IRobustConnector connector = (IRobustConnector)args.ExtensionObject; -- cgit v1.1