mirror of https://github.com/jellyfin/jellyfin.git
3.2.30.8
This commit is contained in:
parent
3b318a3add
commit
49b799adbe
|
@ -17,7 +17,7 @@ using MediaBrowser.Model.Xml;
|
||||||
|
|
||||||
namespace Emby.Dlna.ContentDirectory
|
namespace Emby.Dlna.ContentDirectory
|
||||||
{
|
{
|
||||||
public class ContentDirectory : BaseService, IContentDirectory, IDisposable
|
public class ContentDirectory : BaseService, IContentDirectory
|
||||||
{
|
{
|
||||||
private readonly ILibraryManager _libraryManager;
|
private readonly ILibraryManager _libraryManager;
|
||||||
private readonly IImageProcessor _imageProcessor;
|
private readonly IImageProcessor _imageProcessor;
|
||||||
|
@ -143,10 +143,5 @@ namespace Emby.Dlna.ContentDirectory
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -596,6 +596,7 @@ namespace Emby.Dlna
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -394,6 +394,7 @@ namespace Emby.Dlna.Main
|
||||||
_communicationsServer.Dispose();
|
_communicationsServer.Dispose();
|
||||||
_communicationsServer = null;
|
_communicationsServer = null;
|
||||||
}
|
}
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void DisposeDlnaServer()
|
public void DisposeDlnaServer()
|
||||||
|
|
|
@ -9,7 +9,7 @@ using MediaBrowser.Model.Xml;
|
||||||
|
|
||||||
namespace Emby.Dlna.MediaReceiverRegistrar
|
namespace Emby.Dlna.MediaReceiverRegistrar
|
||||||
{
|
{
|
||||||
public class MediaReceiverRegistrar : BaseService, IMediaReceiverRegistrar, IDisposable
|
public class MediaReceiverRegistrar : BaseService, IMediaReceiverRegistrar
|
||||||
{
|
{
|
||||||
private readonly IServerConfigurationManager _config;
|
private readonly IServerConfigurationManager _config;
|
||||||
protected readonly IXmlReaderSettingsFactory XmlReaderSettingsFactory;
|
protected readonly IXmlReaderSettingsFactory XmlReaderSettingsFactory;
|
||||||
|
@ -33,10 +33,5 @@ namespace Emby.Dlna.MediaReceiverRegistrar
|
||||||
Logger, XmlReaderSettingsFactory)
|
Logger, XmlReaderSettingsFactory)
|
||||||
.ProcessControlRequest(request);
|
.ProcessControlRequest(request);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1105,6 +1105,7 @@ namespace Emby.Dlna.PlayTo
|
||||||
_disposed = true;
|
_disposed = true;
|
||||||
|
|
||||||
DisposeTimer();
|
DisposeTimer();
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -685,6 +685,7 @@ namespace Emby.Dlna.PlayTo
|
||||||
_device.OnDeviceUnavailable = null;
|
_device.OnDeviceUnavailable = null;
|
||||||
|
|
||||||
_device.Dispose();
|
_device.Dispose();
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -225,6 +225,7 @@ namespace Emby.Dlna.PlayTo
|
||||||
{
|
{
|
||||||
_disposed = true;
|
_disposed = true;
|
||||||
_deviceDiscovery.DeviceDiscovered -= _deviceDiscovery_DeviceDiscovered;
|
_deviceDiscovery.DeviceDiscovered -= _deviceDiscovery_DeviceDiscovered;
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ using MediaBrowser.Model.System;
|
||||||
|
|
||||||
namespace Emby.Drawing.ImageMagick
|
namespace Emby.Drawing.ImageMagick
|
||||||
{
|
{
|
||||||
public class ImageMagickEncoder : IImageEncoder
|
public class ImageMagickEncoder : IImageEncoder, IDisposable
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
private readonly ILogger _logger;
|
||||||
private readonly IApplicationPaths _appPaths;
|
private readonly IApplicationPaths _appPaths;
|
||||||
|
@ -38,7 +38,8 @@ namespace Emby.Drawing.ImageMagick
|
||||||
// Some common file name extensions for RAW picture files include: .cr2, .crw, .dng, .nef, .orf, .rw2, .pef, .arw, .sr2, .srf, and .tif.
|
// Some common file name extensions for RAW picture files include: .cr2, .crw, .dng, .nef, .orf, .rw2, .pef, .arw, .sr2, .srf, and .tif.
|
||||||
return new[]
|
return new[]
|
||||||
{
|
{
|
||||||
"tiff",
|
"tiff",
|
||||||
|
"tif",
|
||||||
"jpeg",
|
"jpeg",
|
||||||
"jpg",
|
"jpg",
|
||||||
"png",
|
"png",
|
||||||
|
@ -327,6 +328,7 @@ namespace Emby.Drawing.ImageMagick
|
||||||
{
|
{
|
||||||
_disposed = true;
|
_disposed = true;
|
||||||
Wand.CloseEnvironment();
|
Wand.CloseEnvironment();
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CheckDisposed()
|
private void CheckDisposed()
|
||||||
|
|
|
@ -193,30 +193,31 @@ namespace Emby.Drawing.Skia
|
||||||
{
|
{
|
||||||
using (var stream = new SKFileStream(path))
|
using (var stream = new SKFileStream(path))
|
||||||
{
|
{
|
||||||
var codec = SKCodec.Create(stream);
|
using (var codec = SKCodec.Create(stream))
|
||||||
|
|
||||||
if (codec == null)
|
|
||||||
{
|
{
|
||||||
origin = SKCodecOrigin.TopLeft;
|
if (codec == null)
|
||||||
return null;
|
{
|
||||||
|
origin = SKCodecOrigin.TopLeft;
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// create the bitmap
|
||||||
|
var bitmap = new SKBitmap(codec.Info.Width, codec.Info.Height, !requiresTransparencyHack);
|
||||||
|
|
||||||
|
if (bitmap != null)
|
||||||
|
{
|
||||||
|
// decode
|
||||||
|
codec.GetPixels(bitmap.Info, bitmap.GetPixels());
|
||||||
|
|
||||||
|
origin = codec.Origin;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
origin = SKCodecOrigin.TopLeft;
|
||||||
|
}
|
||||||
|
|
||||||
|
return bitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
// create the bitmap
|
|
||||||
var bitmap = new SKBitmap(codec.Info.Width, codec.Info.Height, !requiresTransparencyHack);
|
|
||||||
|
|
||||||
if (bitmap != null)
|
|
||||||
{
|
|
||||||
// decode
|
|
||||||
codec.GetPixels(bitmap.Info, bitmap.GetPixels());
|
|
||||||
|
|
||||||
origin = codec.Origin;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
origin = SKCodecOrigin.TopLeft;
|
|
||||||
}
|
|
||||||
|
|
||||||
return bitmap;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -593,10 +594,6 @@ namespace Emby.Drawing.Skia
|
||||||
get { return "Skia"; }
|
get { return "Skia"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool SupportsImageCollageCreation
|
public bool SupportsImageCollageCreation
|
||||||
{
|
{
|
||||||
get { return true; }
|
get { return true; }
|
||||||
|
|
|
@ -126,6 +126,7 @@ namespace Emby.Drawing
|
||||||
return new string[]
|
return new string[]
|
||||||
{
|
{
|
||||||
"tiff",
|
"tiff",
|
||||||
|
"tif",
|
||||||
"jpeg",
|
"jpeg",
|
||||||
"jpg",
|
"jpg",
|
||||||
"png",
|
"png",
|
||||||
|
@ -967,8 +968,15 @@ namespace Emby.Drawing
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_disposed = true;
|
_disposed = true;
|
||||||
_imageEncoder.Dispose();
|
|
||||||
|
var disposable = _imageEncoder as IDisposable;
|
||||||
|
if (disposable != null)
|
||||||
|
{
|
||||||
|
disposable.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
_saveImageSizeTimer.Dispose();
|
_saveImageSizeTimer.Dispose();
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CheckDisposed()
|
private void CheckDisposed()
|
||||||
|
|
|
@ -61,9 +61,5 @@ namespace Emby.Drawing
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -491,6 +491,7 @@ namespace Emby.Server.Implementations.Activity
|
||||||
//_logManager.LoggerLoaded -= _logManager_LoggerLoaded;
|
//_logManager.LoggerLoaded -= _logManager_LoggerLoaded;
|
||||||
|
|
||||||
_appHost.ApplicationUpdated -= _appHost_ApplicationUpdated;
|
_appHost.ApplicationUpdated -= _appHost_ApplicationUpdated;
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -828,7 +828,7 @@ namespace Emby.Server.Implementations
|
||||||
RegisterSingleInstance(MemoryStreamFactory);
|
RegisterSingleInstance(MemoryStreamFactory);
|
||||||
RegisterSingleInstance(SystemEvents);
|
RegisterSingleInstance(SystemEvents);
|
||||||
|
|
||||||
RegisterSingleInstance(LogManager);
|
RegisterSingleInstance(LogManager, false);
|
||||||
RegisterSingleInstance(Logger);
|
RegisterSingleInstance(Logger);
|
||||||
|
|
||||||
RegisterSingleInstance(EnvironmentInfo);
|
RegisterSingleInstance(EnvironmentInfo);
|
||||||
|
@ -2341,6 +2341,7 @@ namespace Emby.Server.Implementations
|
||||||
_disposed = true;
|
_disposed = true;
|
||||||
|
|
||||||
Dispose(true);
|
Dispose(true);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2354,6 +2355,7 @@ namespace Emby.Server.Implementations
|
||||||
{
|
{
|
||||||
var type = GetType();
|
var type = GetType();
|
||||||
|
|
||||||
|
LogManager.AddConsoleOutput();
|
||||||
Logger.Info("Disposing " + type.Name);
|
Logger.Info("Disposing " + type.Name);
|
||||||
|
|
||||||
var parts = DisposableParts.Distinct().Where(i => i.GetType() != type).ToList();
|
var parts = DisposableParts.Distinct().Where(i => i.GetType() != type).ToList();
|
||||||
|
|
|
@ -1624,6 +1624,7 @@ namespace Emby.Server.Implementations.Channels
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -77,6 +77,7 @@ namespace Emby.Server.Implementations.Data
|
||||||
{
|
{
|
||||||
Close();
|
Close();
|
||||||
}
|
}
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -104,6 +104,7 @@ namespace Emby.Server.Implementations.Diagnostics
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_process.Dispose();
|
_process.Dispose();
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -112,6 +112,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||||
_appHost.HasPendingRestartChanged -= _appHost_HasPendingRestartChanged;
|
_appHost.HasPendingRestartChanged -= _appHost_HasPendingRestartChanged;
|
||||||
|
|
||||||
DisposeTimer();
|
DisposeTimer();
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DisposeTimer()
|
private void DisposeTimer()
|
||||||
|
|
|
@ -294,6 +294,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||||
{
|
{
|
||||||
_disposed = true;
|
_disposed = true;
|
||||||
DisposeNat();
|
DisposeNat();
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DisposeNat()
|
private void DisposeNat()
|
||||||
|
|
|
@ -60,6 +60,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||||
_timer.Dispose();
|
_timer.Dispose();
|
||||||
_timer = null;
|
_timer = null;
|
||||||
}
|
}
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -426,6 +426,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
Dispose(true);
|
Dispose(true);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -68,6 +68,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||||
_timer.Dispose();
|
_timer.Dispose();
|
||||||
_timer = null;
|
_timer = null;
|
||||||
}
|
}
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,6 +72,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||||
_liveTvManager.SeriesTimerCancelled -= _liveTvManager_SeriesTimerCancelled;
|
_liveTvManager.SeriesTimerCancelled -= _liveTvManager_SeriesTimerCancelled;
|
||||||
_liveTvManager.TimerCreated -= _liveTvManager_TimerCreated;
|
_liveTvManager.TimerCreated -= _liveTvManager_TimerCreated;
|
||||||
_liveTvManager.SeriesTimerCreated -= _liveTvManager_SeriesTimerCreated;
|
_liveTvManager.SeriesTimerCreated -= _liveTvManager_SeriesTimerCreated;
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using MediaBrowser.Controller.Library;
|
using System;
|
||||||
|
using MediaBrowser.Controller.Library;
|
||||||
using MediaBrowser.Controller.Plugins;
|
using MediaBrowser.Controller.Plugins;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
|
@ -36,6 +37,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -174,6 +174,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
Dispose(true);
|
Dispose(true);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using Emby.Server.Implementations.Browser;
|
using System;
|
||||||
|
using Emby.Server.Implementations.Browser;
|
||||||
using MediaBrowser.Controller;
|
using MediaBrowser.Controller;
|
||||||
using MediaBrowser.Controller.Plugins;
|
using MediaBrowser.Controller.Plugins;
|
||||||
using MediaBrowser.Model.Logging;
|
using MediaBrowser.Model.Logging;
|
||||||
|
@ -54,6 +55,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -43,6 +43,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_systemEvents.SystemShutdown -= _systemEvents_SystemShutdown;
|
_systemEvents.SystemShutdown -= _systemEvents_SystemShutdown;
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,6 +65,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
Dispose(true);
|
Dispose(true);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -130,6 +130,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_sessionManager.SessionStarted -= _sessionManager_SessionStarted;
|
_sessionManager.SessionStarted -= _sessionManager_SessionStarted;
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -160,6 +160,7 @@ namespace Emby.Server.Implementations.EntryPoints
|
||||||
}
|
}
|
||||||
|
|
||||||
_userDataManager.UserDataSaved -= _userDataManager_UserDataSaved;
|
_userDataManager.UserDataSaved -= _userDataManager_UserDataSaved;
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -822,27 +822,6 @@ namespace Emby.Server.Implementations.HttpClientManager
|
||||||
return url;
|
return url;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
|
|
||||||
/// </summary>
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
Dispose(true);
|
|
||||||
GC.SuppressFinalize(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <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 virtual void Dispose(bool dispose)
|
|
||||||
{
|
|
||||||
if (dispose)
|
|
||||||
{
|
|
||||||
_httpClients.Clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Throws the cancellation exception.
|
/// Throws the cancellation exception.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -123,6 +123,7 @@ namespace Emby.Server.Implementations.HttpServer.SocketSharp
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
Dispose(true);
|
Dispose(true);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -238,6 +238,7 @@ namespace Emby.Server.Implementations.IO
|
||||||
{
|
{
|
||||||
_disposed = true;
|
_disposed = true;
|
||||||
DisposeTimer();
|
DisposeTimer();
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -70,6 +70,7 @@ namespace Emby.Server.Implementations.IO
|
||||||
{
|
{
|
||||||
mounter.Dispose();
|
mounter.Dispose();
|
||||||
}
|
}
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -649,6 +649,7 @@ namespace Emby.Server.Implementations.IO
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -524,6 +524,7 @@ namespace Emby.Server.Implementations.Library
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
Dispose(true);
|
Dispose(true);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private readonly object _disposeLock = new object();
|
private readonly object _disposeLock = new object();
|
||||||
|
|
|
@ -2630,6 +2630,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||||
{
|
{
|
||||||
pair.Value.CancellationTokenSource.Cancel();
|
pair.Value.CancellationTokenSource.Cancel();
|
||||||
}
|
}
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<VirtualFolderInfo> GetRecordingFolders()
|
public List<VirtualFolderInfo> GetRecordingFolders()
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using MediaBrowser.Controller.Plugins;
|
using System;
|
||||||
|
using MediaBrowser.Controller.Plugins;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||||
{
|
{
|
||||||
|
@ -11,6 +12,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2779,6 +2779,7 @@ namespace Emby.Server.Implementations.LiveTv
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
Dispose(true);
|
Dispose(true);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool _isDisposed = false;
|
private bool _isDisposed = false;
|
||||||
|
|
|
@ -422,7 +422,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||||
SupportsTranscoding = true,
|
SupportsTranscoding = true,
|
||||||
IsInfiniteStream = true,
|
IsInfiniteStream = true,
|
||||||
IgnoreDts = true,
|
IgnoreDts = true,
|
||||||
//SupportsProbing = false,
|
SupportsProbing = false,
|
||||||
//AnalyzeDurationMs = 2000000
|
//AnalyzeDurationMs = 2000000
|
||||||
//IgnoreIndex = true,
|
//IgnoreIndex = true,
|
||||||
//ReadAtNativeFramerate = true
|
//ReadAtNativeFramerate = true
|
||||||
|
|
|
@ -99,6 +99,7 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts.HdHomerun
|
||||||
var task = StopStreaming();
|
var task = StopStreaming();
|
||||||
|
|
||||||
Task.WaitAll(task);
|
Task.WaitAll(task);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<bool> CheckTunerAvailability(IpAddressInfo remoteIp, int tuner, CancellationToken cancellationToken)
|
public async Task<bool> CheckTunerAvailability(IpAddressInfo remoteIp, int tuner, CancellationToken cancellationToken)
|
||||||
|
|
|
@ -107,6 +107,7 @@ namespace Emby.Server.Implementations.Logging
|
||||||
}
|
}
|
||||||
|
|
||||||
_fileLogger = null;
|
_fileLogger = null;
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -130,13 +131,18 @@ namespace Emby.Server.Implementations.Logging
|
||||||
|
|
||||||
private void LogInternal()
|
private void LogInternal()
|
||||||
{
|
{
|
||||||
while (!_cancellationTokenSource.IsCancellationRequested)
|
while (!_cancellationTokenSource.IsCancellationRequested && !_disposed)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
foreach (var message in _queue.GetConsumingEnumerable())
|
foreach (var message in _queue.GetConsumingEnumerable())
|
||||||
{
|
{
|
||||||
var bytes = Encoding.UTF8.GetBytes(message + Environment.NewLine);
|
var bytes = Encoding.UTF8.GetBytes(message + Environment.NewLine);
|
||||||
|
if (_disposed)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
_fileStream.Write(bytes, 0, bytes.Length);
|
_fileStream.Write(bytes, 0, bytes.Length);
|
||||||
|
|
||||||
_fileStream.Flush(true);
|
_fileStream.Flush(true);
|
||||||
|
@ -166,17 +172,18 @@ namespace Emby.Server.Implementations.Logging
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_fileStream.Flush();
|
_fileStream.Flush(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_cancellationTokenSource.Cancel();
|
_cancellationTokenSource.Cancel();
|
||||||
|
|
||||||
_disposed = true;
|
Flush();
|
||||||
|
|
||||||
_fileStream.Flush();
|
_disposed = true;
|
||||||
_fileStream.Dispose();
|
_fileStream.Dispose();
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -92,6 +92,7 @@ namespace Emby.Server.Implementations.Net
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
Socket.Dispose();
|
Socket.Dispose();
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -271,6 +271,7 @@ namespace Emby.Server.Implementations.News
|
||||||
_timer.Dispose();
|
_timer.Dispose();
|
||||||
_timer = null;
|
_timer = null;
|
||||||
}
|
}
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -551,6 +551,7 @@ namespace Emby.Server.Implementations.Notifications
|
||||||
|
|
||||||
_deviceManager.CameraImageUploaded -= _deviceManager_CameraImageUploaded;
|
_deviceManager.CameraImageUploaded -= _deviceManager_CameraImageUploaded;
|
||||||
_userManager.UserLockedOut -= _userManager_UserLockedOut;
|
_userManager.UserLockedOut -= _userManager_UserLockedOut;
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DisposeLibraryUpdateTimer()
|
private void DisposeLibraryUpdateTimer()
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using MediaBrowser.Controller.Net;
|
using System;
|
||||||
|
using MediaBrowser.Controller.Net;
|
||||||
using MediaBrowser.Controller.Notifications;
|
using MediaBrowser.Controller.Notifications;
|
||||||
using MediaBrowser.Controller.Plugins;
|
using MediaBrowser.Controller.Plugins;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
@ -49,6 +50,7 @@ namespace Emby.Server.Implementations.Notifications
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_notificationsRepo.NotificationAdded -= _notificationsRepo_NotificationAdded;
|
_notificationsRepo.NotificationAdded -= _notificationsRepo_NotificationAdded;
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Emby.Server.Implementations.Session
|
namespace Emby.Server.Implementations.Session
|
||||||
{
|
{
|
||||||
public class HttpSessionController : ISessionController, IDisposable
|
public class HttpSessionController : ISessionController
|
||||||
{
|
{
|
||||||
private readonly IHttpClient _httpClient;
|
private readonly IHttpClient _httpClient;
|
||||||
private readonly IJsonSerializer _json;
|
private readonly IJsonSerializer _json;
|
||||||
|
@ -195,9 +195,5 @@ namespace Emby.Server.Implementations.Session
|
||||||
|
|
||||||
return "?" + args;
|
return "?" + args;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,6 +102,7 @@ namespace Emby.Server.Implementations.Session
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_serverManager.WebSocketConnected -= _serverManager_WebSocketConnected;
|
_serverManager.WebSocketConnected -= _serverManager_WebSocketConnected;
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -283,6 +283,7 @@ namespace Emby.Server.Implementations.Session
|
||||||
{
|
{
|
||||||
socket.Closed -= connection_Closed;
|
socket.Closed -= connection_Closed;
|
||||||
}
|
}
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -217,6 +217,7 @@ namespace Emby.Server.Implementations.TV
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
Dispose(true);
|
Dispose(true);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -31,6 +31,7 @@ namespace Emby.Server.Implementations.Threading
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_timer.Dispose();
|
_timer.Dispose();
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -722,6 +722,7 @@ namespace Emby.Server.Implementations.Updates
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
Dispose(true);
|
Dispose(true);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -81,18 +81,14 @@ namespace MediaBrowser.Api
|
||||||
return value.Split(separator);
|
return value.Split(separator);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Runs this instance.
|
|
||||||
/// </summary>
|
|
||||||
public void Run()
|
public void Run()
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
|
|
||||||
/// </summary>
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -314,6 +314,7 @@ namespace MediaBrowser.Api
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
Dispose(true);
|
Dispose(true);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -70,6 +70,7 @@ namespace MediaBrowser.Common.Net
|
||||||
{
|
{
|
||||||
_disposable.Dispose();
|
_disposable.Dispose();
|
||||||
}
|
}
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,7 +9,7 @@ namespace MediaBrowser.Common.Net
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Interface IHttpClient
|
/// Interface IHttpClient
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public interface IHttpClient : IDisposable
|
public interface IHttpClient
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the response.
|
/// Gets the response.
|
||||||
|
|
|
@ -30,6 +30,7 @@ namespace MediaBrowser.Common.Progress
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
Dispose(true);
|
Dispose(true);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -3,7 +3,7 @@ using MediaBrowser.Model.Drawing;
|
||||||
|
|
||||||
namespace MediaBrowser.Controller.Drawing
|
namespace MediaBrowser.Controller.Drawing
|
||||||
{
|
{
|
||||||
public interface IImageEncoder : IDisposable
|
public interface IImageEncoder
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the supported input formats.
|
/// Gets the supported input formats.
|
||||||
|
|
|
@ -23,6 +23,7 @@ namespace MediaBrowser.Controller.Drawing
|
||||||
{
|
{
|
||||||
Stream.Dispose();
|
Stream.Dispose();
|
||||||
}
|
}
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -303,6 +303,7 @@ namespace MediaBrowser.Controller.Session
|
||||||
|
|
||||||
StopAutomaticProgress();
|
StopAutomaticProgress();
|
||||||
_sessionManager = null;
|
_sessionManager = null;
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -59,6 +59,7 @@ namespace MediaBrowser.Model.Net
|
||||||
{
|
{
|
||||||
_disposable.Dispose();
|
_disposable.Dispose();
|
||||||
}
|
}
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1110,6 +1110,7 @@ namespace MediaBrowser.Providers.Manager
|
||||||
{
|
{
|
||||||
_disposeCancellationTokenSource.Cancel();
|
_disposeCancellationTokenSource.Cancel();
|
||||||
}
|
}
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -29,7 +29,7 @@ namespace MediaBrowser.Providers.Movies
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class MovieDbProvider
|
/// Class MovieDbProvider
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class MovieDbProvider : IRemoteMetadataProvider<Movie, MovieInfo>, IDisposable, IHasOrder
|
public class MovieDbProvider : IRemoteMetadataProvider<Movie, MovieInfo>, IHasOrder
|
||||||
{
|
{
|
||||||
internal static MovieDbProvider Current { get; private set; }
|
internal static MovieDbProvider Current { get; private set; }
|
||||||
|
|
||||||
|
@ -130,14 +130,6 @@ namespace MediaBrowser.Providers.Movies
|
||||||
get { return "TheMovieDb"; }
|
get { return "TheMovieDb"; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <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 virtual void Dispose(bool dispose)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The _TMDB settings task
|
/// The _TMDB settings task
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -434,11 +426,6 @@ namespace MediaBrowser.Providers.Movies
|
||||||
return await _httpClient.Get(options).ConfigureAwait(false);
|
return await _httpClient.Get(options).ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
|
||||||
{
|
|
||||||
Dispose(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Class TmdbTitle
|
/// Class TmdbTitle
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -56,20 +56,22 @@ namespace MediaBrowser.Server.Mac
|
||||||
|
|
||||||
var appPaths = CreateApplicationPaths(appFolderPath, customProgramDataPath);
|
var appPaths = CreateApplicationPaths(appFolderPath, customProgramDataPath);
|
||||||
|
|
||||||
var logManager = new SimpleLogManager(appPaths.LogDirectoryPath, "server");
|
using (var logManager = new SimpleLogManager(appPaths.LogDirectoryPath, "server"))
|
||||||
logManager.ReloadLogger(LogSeverity.Info);
|
{
|
||||||
logManager.AddConsoleOutput();
|
logManager.ReloadLogger(LogSeverity.Info);
|
||||||
|
logManager.AddConsoleOutput();
|
||||||
|
|
||||||
var logger = _logger = logManager.GetLogger("Main");
|
var logger = _logger = logManager.GetLogger("Main");
|
||||||
|
|
||||||
ApplicationHost.LogEnvironmentInfo(logger, appPaths, true);
|
ApplicationHost.LogEnvironmentInfo(logger, appPaths, true);
|
||||||
|
|
||||||
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
||||||
|
|
||||||
StartApplication(appPaths, logManager, options);
|
StartApplication(appPaths, logManager, options);
|
||||||
NSApplication.Init ();
|
NSApplication.Init();
|
||||||
NSApplication.Main (args);
|
NSApplication.Main(args);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static ServerApplicationPaths CreateApplicationPaths(string appFolderPath, string programDataPath)
|
private static ServerApplicationPaths CreateApplicationPaths(string appFolderPath, string programDataPath)
|
||||||
{
|
{
|
||||||
|
|
|
@ -50,28 +50,30 @@ namespace MediaBrowser.Server.Mono
|
||||||
|
|
||||||
var appPaths = CreateApplicationPaths(applicationPath, customProgramDataPath);
|
var appPaths = CreateApplicationPaths(applicationPath, customProgramDataPath);
|
||||||
|
|
||||||
var logManager = new SimpleLogManager(appPaths.LogDirectoryPath, "server");
|
using (var logManager = new SimpleLogManager(appPaths.LogDirectoryPath, "server"))
|
||||||
logManager.ReloadLogger(LogSeverity.Info);
|
|
||||||
logManager.AddConsoleOutput();
|
|
||||||
|
|
||||||
var logger = _logger = logManager.GetLogger("Main");
|
|
||||||
|
|
||||||
ApplicationHost.LogEnvironmentInfo(logger, appPaths, true);
|
|
||||||
|
|
||||||
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
RunApplication(appPaths, logManager, options);
|
logManager.ReloadLogger(LogSeverity.Info);
|
||||||
}
|
logManager.AddConsoleOutput();
|
||||||
finally
|
|
||||||
{
|
|
||||||
_logger.Info("Disposing app host");
|
|
||||||
_appHost.Dispose();
|
|
||||||
|
|
||||||
if (_restartOnShutdown)
|
var logger = _logger = logManager.GetLogger("Main");
|
||||||
|
|
||||||
|
ApplicationHost.LogEnvironmentInfo(logger, appPaths, true);
|
||||||
|
|
||||||
|
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
||||||
|
|
||||||
|
try
|
||||||
{
|
{
|
||||||
StartNewInstance(options);
|
RunApplication(appPaths, logManager, options);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
_logger.Info("Disposing app host");
|
||||||
|
_appHost.Dispose();
|
||||||
|
|
||||||
|
if (_restartOnShutdown)
|
||||||
|
{
|
||||||
|
StartNewInstance(options);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,69 +72,71 @@ namespace MediaBrowser.ServerApplication
|
||||||
|
|
||||||
var appPaths = CreateApplicationPaths(ApplicationPath, IsRunningAsService);
|
var appPaths = CreateApplicationPaths(ApplicationPath, IsRunningAsService);
|
||||||
|
|
||||||
var logManager = new SimpleLogManager(appPaths.LogDirectoryPath, "server");
|
using (var logManager = new SimpleLogManager(appPaths.LogDirectoryPath, "server"))
|
||||||
logManager.ReloadLogger(LogSeverity.Debug);
|
|
||||||
logManager.AddConsoleOutput();
|
|
||||||
|
|
||||||
var logger = _logger = logManager.GetLogger("Main");
|
|
||||||
|
|
||||||
ApplicationHost.LogEnvironmentInfo(logger, appPaths, true);
|
|
||||||
|
|
||||||
// Install directly
|
|
||||||
if (options.ContainsOption("-installservice"))
|
|
||||||
{
|
{
|
||||||
logger.Info("Performing service installation");
|
logManager.ReloadLogger(LogSeverity.Debug);
|
||||||
InstallService(ApplicationPath, logger);
|
logManager.AddConsoleOutput();
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Restart with admin rights, then install
|
var logger = _logger = logManager.GetLogger("Main");
|
||||||
if (options.ContainsOption("-installserviceasadmin"))
|
|
||||||
{
|
|
||||||
logger.Info("Performing service installation");
|
|
||||||
RunServiceInstallation(ApplicationPath);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Uninstall directly
|
ApplicationHost.LogEnvironmentInfo(logger, appPaths, true);
|
||||||
if (options.ContainsOption("-uninstallservice"))
|
|
||||||
{
|
|
||||||
logger.Info("Performing service uninstallation");
|
|
||||||
UninstallService(ApplicationPath, logger);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Restart with admin rights, then uninstall
|
// Install directly
|
||||||
if (options.ContainsOption("-uninstallserviceasadmin"))
|
if (options.ContainsOption("-installservice"))
|
||||||
{
|
{
|
||||||
logger.Info("Performing service uninstallation");
|
logger.Info("Performing service installation");
|
||||||
RunServiceUninstallation(ApplicationPath);
|
InstallService(ApplicationPath, logger);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
// Restart with admin rights, then install
|
||||||
|
if (options.ContainsOption("-installserviceasadmin"))
|
||||||
|
{
|
||||||
|
logger.Info("Performing service installation");
|
||||||
|
RunServiceInstallation(ApplicationPath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
RunServiceInstallationIfNeeded(ApplicationPath);
|
// Uninstall directly
|
||||||
|
if (options.ContainsOption("-uninstallservice"))
|
||||||
|
{
|
||||||
|
logger.Info("Performing service uninstallation");
|
||||||
|
UninstallService(ApplicationPath, logger);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (IsAlreadyRunning(ApplicationPath, currentProcess))
|
// Restart with admin rights, then uninstall
|
||||||
{
|
if (options.ContainsOption("-uninstallserviceasadmin"))
|
||||||
logger.Info("Shutting down because another instance of Emby Server is already running.");
|
{
|
||||||
return;
|
logger.Info("Performing service uninstallation");
|
||||||
}
|
RunServiceUninstallation(ApplicationPath);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (PerformUpdateIfNeeded(appPaths, logger))
|
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
||||||
{
|
|
||||||
logger.Info("Exiting to perform application update.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
RunServiceInstallationIfNeeded(ApplicationPath);
|
||||||
{
|
|
||||||
RunApplication(appPaths, logManager, IsRunningAsService, options);
|
if (IsAlreadyRunning(ApplicationPath, currentProcess))
|
||||||
}
|
{
|
||||||
finally
|
logger.Info("Shutting down because another instance of Emby Server is already running.");
|
||||||
{
|
return;
|
||||||
OnServiceShutdown();
|
}
|
||||||
|
|
||||||
|
if (PerformUpdateIfNeeded(appPaths, logger))
|
||||||
|
{
|
||||||
|
logger.Info("Exiting to perform application update.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
RunApplication(appPaths, logManager, IsRunningAsService, options);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
OnServiceShutdown();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -81,6 +81,7 @@ namespace MediaBrowser.XbmcMetadata
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
_userDataManager.UserDataSaved -= _userDataManager_UserDataSaved;
|
_userDataManager.UserDataSaved -= _userDataManager_UserDataSaved;
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void SaveMetadataForItem(BaseItem item, ItemUpdateType updateReason)
|
private async void SaveMetadataForItem(BaseItem item, ItemUpdateType updateReason)
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
|
||||||
[assembly: AssemblyVersion("3.2.30.7")]
|
[assembly: AssemblyVersion("3.2.30.8")]
|
||||||
|
|
|
@ -248,6 +248,7 @@ namespace SocketHttpListener.Net
|
||||||
|
|
||||||
Close(true); //TODO: Should we force here or not?
|
Close(true); //TODO: Should we force here or not?
|
||||||
disposed = true;
|
disposed = true;
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void CheckDisposed()
|
internal void CheckDisposed()
|
||||||
|
|
|
@ -880,6 +880,7 @@ namespace SocketHttpListener
|
||||||
void IDisposable.Dispose()
|
void IDisposable.Dispose()
|
||||||
{
|
{
|
||||||
Close(CloseStatusCode.Away, null);
|
Close(CloseStatusCode.Away, null);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
Loading…
Reference in New Issue