| 
					
				 | 
			
			
				@@ -24,12 +24,27 @@ namespace MediaBrowser.ServerApplication 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /// </summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public partial class App : Application 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// The single instance mutex 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        /// </summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        private static Mutex _singleInstanceMutex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// Defines the entry point of the application. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// </summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         [STAThread] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         public static void Main() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            bool createdNew; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _singleInstanceMutex = new Mutex(true, @"Local\" + typeof(App).Assembly.GetName().Name, out createdNew); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+             
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!createdNew) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                _singleInstanceMutex = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // Look for the existence of an update archive 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var appPaths = new ServerApplicationPaths(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             var updateArchive = Path.Combine(appPaths.TempUpdatePath, Constants.MbServerPkgName + ".zip"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -66,11 +81,6 @@ namespace MediaBrowser.ServerApplication 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /// The single instance mutex 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        /// </summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        private Mutex SingleInstanceMutex; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// <summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// Gets or sets the logger. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// </summary> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -107,15 +117,6 @@ namespace MediaBrowser.ServerApplication 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// <param name="e">A <see cref="T:System.Windows.StartupEventArgs" /> that contains the event data.</param> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         protected override void OnStartup(StartupEventArgs e) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            bool createdNew; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SingleInstanceMutex = new Mutex(true, @"Local\" + GetType().Assembly.GetName().Name, out createdNew); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!createdNew) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                SingleInstanceMutex = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Shutdown(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             LoadKernel(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -190,7 +191,10 @@ namespace MediaBrowser.ServerApplication 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             base.OnExit(e); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            CompositionRoot.Dispose(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (CompositionRoot != null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                CompositionRoot.Dispose(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// <summary> 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -198,15 +202,15 @@ namespace MediaBrowser.ServerApplication 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// </summary> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         private void ReleaseMutex() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (SingleInstanceMutex == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (_singleInstanceMutex == null) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SingleInstanceMutex.ReleaseMutex(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SingleInstanceMutex.Close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SingleInstanceMutex.Dispose(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            SingleInstanceMutex = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _singleInstanceMutex.ReleaseMutex(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _singleInstanceMutex.Close(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _singleInstanceMutex.Dispose(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            _singleInstanceMutex = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         /// <summary> 
			 |