get to the tray icon a little quicker

This commit is contained in:
Luke Pulverenti 2013-05-18 18:07:59 -04:00
parent 3fc0b768d1
commit 407016a307
5 changed files with 77 additions and 59 deletions

View file

@ -180,8 +180,6 @@ namespace MediaBrowser.Common.Implementations
await RegisterResources().ConfigureAwait(false); await RegisterResources().ConfigureAwait(false);
FindParts(); FindParts();
await RunStartupTasks().ConfigureAwait(false);
} }
protected virtual void OnLoggerLoaded() protected virtual void OnLoggerLoaded()
@ -193,7 +191,7 @@ namespace MediaBrowser.Common.Implementations
/// Runs the startup tasks. /// Runs the startup tasks.
/// </summary> /// </summary>
/// <returns>Task.</returns> /// <returns>Task.</returns>
protected virtual Task RunStartupTasks() public virtual Task RunStartupTasks()
{ {
return Task.Run(() => return Task.Run(() =>
{ {

View file

@ -6,6 +6,7 @@ using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Entities; using MediaBrowser.Controller.Entities;
using MediaBrowser.Model.Logging; using MediaBrowser.Model.Logging;
using MediaBrowser.Server.Implementations; using MediaBrowser.Server.Implementations;
using MediaBrowser.ServerApplication.Splash;
using Microsoft.Win32; using Microsoft.Win32;
using System; using System;
using System.Diagnostics; using System.Diagnostics;
@ -164,11 +165,19 @@ namespace MediaBrowser.ServerApplication
Logger = CompositionRoot.LogManager.GetLogger("App"); Logger = CompositionRoot.LogManager.GetLogger("App");
var splash = new SplashWindow(CompositionRoot.ApplicationVersion);
splash.Show();
await CompositionRoot.Init(); await CompositionRoot.Init();
var win = new MainWindow(CompositionRoot.LogManager, CompositionRoot, CompositionRoot.ServerConfigurationManager, CompositionRoot.UserManager, CompositionRoot.LibraryManager, CompositionRoot.JsonSerializer, CompositionRoot.DisplayPreferencesManager); splash.Hide();
win.Show(); var task = CompositionRoot.RunStartupTasks();
new MainWindow(CompositionRoot.LogManager, CompositionRoot, CompositionRoot.ServerConfigurationManager, CompositionRoot.UserManager, CompositionRoot.LibraryManager, CompositionRoot.JsonSerializer, CompositionRoot.DisplayPreferencesManager).Show();
await task.ConfigureAwait(false);
} }
catch (Exception ex) catch (Exception ex)
{ {

View file

@ -44,7 +44,6 @@ using MediaBrowser.Server.Implementations.Udp;
using MediaBrowser.Server.Implementations.Updates; using MediaBrowser.Server.Implementations.Updates;
using MediaBrowser.Server.Implementations.WebSocket; using MediaBrowser.Server.Implementations.WebSocket;
using MediaBrowser.ServerApplication.Implementations; using MediaBrowser.ServerApplication.Implementations;
using MediaBrowser.ServerApplication.Splash;
using MediaBrowser.WebDashboard.Api; using MediaBrowser.WebDashboard.Api;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -63,7 +62,7 @@ namespace MediaBrowser.ServerApplication
/// </summary> /// </summary>
public class ApplicationHost : BaseApplicationHost<ServerApplicationPaths>, IServerApplicationHost public class ApplicationHost : BaseApplicationHost<ServerApplicationPaths>, IServerApplicationHost
{ {
private const int UdpServerPort = 7359; internal const int UdpServerPort = 7359;
/// <summary> /// <summary>
/// Gets the server kernel. /// Gets the server kernel.
@ -139,11 +138,6 @@ namespace MediaBrowser.ServerApplication
/// <value>The HTTP server.</value> /// <value>The HTTP server.</value>
private IHttpServer HttpServer { get; set; } private IHttpServer HttpServer { get; set; }
/// <summary>
/// Gets or sets the UDP server.
/// </summary>
/// <value>The UDP server.</value>
private UdpServer UdpServer { get; set; }
/// <summary> /// <summary>
/// Gets or sets the display preferences manager. /// Gets or sets the display preferences manager.
/// </summary> /// </summary>
@ -175,26 +169,11 @@ namespace MediaBrowser.ServerApplication
private Task<IHttpServer> _httpServerCreationTask; private Task<IHttpServer> _httpServerCreationTask;
/// <summary>
/// Inits this instance.
/// </summary>
/// <returns>Task.</returns>
public override async Task Init()
{
var win = new SplashWindow(ApplicationVersion);
win.Show();
await base.Init();
win.Hide();
}
/// <summary> /// <summary>
/// Runs the startup tasks. /// Runs the startup tasks.
/// </summary> /// </summary>
/// <returns>Task.</returns> /// <returns>Task.</returns>
protected override async Task RunStartupTasks() public override async Task RunStartupTasks()
{ {
await base.RunStartupTasks().ConfigureAwait(false); await base.RunStartupTasks().ConfigureAwait(false);
@ -390,21 +369,8 @@ namespace MediaBrowser.ServerApplication
() => LibraryManager.AddParts(GetExports<IResolverIgnoreRule>(), GetExports<IVirtualFolderCreator>(), GetExports<IItemResolver>(), GetExports<IIntroProvider>(), GetExports<IBaseItemComparer>()), () => LibraryManager.AddParts(GetExports<IResolverIgnoreRule>(), GetExports<IVirtualFolderCreator>(), GetExports<IItemResolver>(), GetExports<IIntroProvider>(), GetExports<IBaseItemComparer>()),
() => ProviderManager.AddMetadataProviders(GetExports<BaseMetadataProvider>().ToArray()), () => ProviderManager.AddMetadataProviders(GetExports<BaseMetadataProvider>().ToArray())
() =>
{
UdpServer = new UdpServer(Logger, NetworkManager, ServerConfigurationManager);
try
{
UdpServer.Start(UdpServerPort);
}
catch (SocketException ex)
{
Logger.ErrorException("Failed to start UDP Server", ex);
}
}
); );
} }
@ -471,23 +437,6 @@ namespace MediaBrowser.ServerApplication
get { return ConfigurationManager.CommonConfiguration.EnableAutoUpdate; } get { return ConfigurationManager.CommonConfiguration.EnableAutoUpdate; }
} }
/// <summary>
/// Releases unmanaged and - optionally - managed resources.
/// </summary>
/// <param name="dispose"><c>true</c> to release both managed and unmanaged resources; <c>false</c> to release only unmanaged resources.</param>
protected override void Dispose(bool dispose)
{
if (dispose)
{
if (UdpServer != null)
{
UdpServer.Dispose();
}
}
base.Dispose(dispose);
}
/// <summary> /// <summary>
/// Checks for update. /// Checks for update.
/// </summary> /// </summary>

View file

@ -0,0 +1,61 @@
using MediaBrowser.Common.Net;
using MediaBrowser.Controller.Configuration;
using MediaBrowser.Controller.Plugins;
using MediaBrowser.Model.Logging;
using MediaBrowser.Server.Implementations.Udp;
using System.Net.Sockets;
namespace MediaBrowser.ServerApplication.EntryPoints
{
public class UdpServerEntryPoint : IServerEntryPoint
{
/// <summary>
/// Gets or sets the UDP server.
/// </summary>
/// <value>The UDP server.</value>
private UdpServer UdpServer { get; set; }
private readonly ILogger _logger;
private readonly INetworkManager _networkManager;
private readonly IServerConfigurationManager _serverConfigurationManager;
public UdpServerEntryPoint(ILogger logger, INetworkManager networkManager, IServerConfigurationManager serverConfigurationManager)
{
_logger = logger;
_networkManager = networkManager;
_serverConfigurationManager = serverConfigurationManager;
}
public void Run()
{
var udpServer = new UdpServer(_logger, _networkManager, _serverConfigurationManager);
try
{
udpServer.Start(ApplicationHost.UdpServerPort);
UdpServer = udpServer;
}
catch (SocketException ex)
{
_logger.ErrorException("Failed to start UDP Server", ex);
}
}
public void Dispose()
{
Dispose(true);
}
protected virtual void Dispose(bool dispose)
{
if (dispose)
{
if (UdpServer != null)
{
UdpServer.Dispose();
}
}
}
}
}

View file

@ -196,6 +196,7 @@
<Compile Include="EntryPoints\LoadRegistrations.cs" /> <Compile Include="EntryPoints\LoadRegistrations.cs" />
<Compile Include="EntryPoints\RefreshUsersMetadata.cs" /> <Compile Include="EntryPoints\RefreshUsersMetadata.cs" />
<Compile Include="EntryPoints\StartupWizard.cs" /> <Compile Include="EntryPoints\StartupWizard.cs" />
<Compile Include="EntryPoints\UdpServerEntryPoint.cs" />
<Compile Include="EntryPoints\WebSocketEvents.cs" /> <Compile Include="EntryPoints\WebSocketEvents.cs" />
<Compile Include="Splash\SplashWindow.xaml.cs"> <Compile Include="Splash\SplashWindow.xaml.cs">
<DependentUpon>SplashWindow.xaml</DependentUpon> <DependentUpon>SplashWindow.xaml</DependentUpon>