This commit is contained in:
Luke Pulverenti 2017-09-05 15:49:02 -04:00
parent 3b318a3add
commit 49b799adbe
69 changed files with 207 additions and 187 deletions

View File

@ -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()
{
}
} }
} }

View File

@ -596,6 +596,7 @@ namespace Emby.Dlna
public void Dispose() public void Dispose()
{ {
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -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()

View File

@ -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()
{
}
} }
} }

View File

@ -1105,6 +1105,7 @@ namespace Emby.Dlna.PlayTo
_disposed = true; _disposed = true;
DisposeTimer(); DisposeTimer();
GC.SuppressFinalize(this);
} }
} }

View File

@ -685,6 +685,7 @@ namespace Emby.Dlna.PlayTo
_device.OnDeviceUnavailable = null; _device.OnDeviceUnavailable = null;
_device.Dispose(); _device.Dispose();
GC.SuppressFinalize(this);
} }
} }

View File

@ -225,6 +225,7 @@ namespace Emby.Dlna.PlayTo
{ {
_disposed = true; _disposed = true;
_deviceDiscovery.DeviceDiscovered -= _deviceDiscovery_DeviceDiscovered; _deviceDiscovery.DeviceDiscovered -= _deviceDiscovery_DeviceDiscovered;
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -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()

View File

@ -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; }

View File

@ -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()

View File

@ -61,9 +61,5 @@ namespace Emby.Drawing
{ {
throw new NotImplementedException(); throw new NotImplementedException();
} }
public void Dispose()
{
}
} }
} }

View File

@ -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>

View File

@ -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();

View File

@ -1624,6 +1624,7 @@ namespace Emby.Server.Implementations.Channels
public void Dispose() public void Dispose()
{ {
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -77,6 +77,7 @@ namespace Emby.Server.Implementations.Data
{ {
Close(); Close();
} }
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -104,6 +104,7 @@ namespace Emby.Server.Implementations.Diagnostics
public void Dispose() public void Dispose()
{ {
_process.Dispose(); _process.Dispose();
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -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()

View File

@ -294,6 +294,7 @@ namespace Emby.Server.Implementations.EntryPoints
{ {
_disposed = true; _disposed = true;
DisposeNat(); DisposeNat();
GC.SuppressFinalize(this);
} }
private void DisposeNat() private void DisposeNat()

View File

@ -60,6 +60,7 @@ namespace Emby.Server.Implementations.EntryPoints
_timer.Dispose(); _timer.Dispose();
_timer = null; _timer = null;
} }
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -426,6 +426,7 @@ namespace Emby.Server.Implementations.EntryPoints
public void Dispose() public void Dispose()
{ {
Dispose(true); Dispose(true);
GC.SuppressFinalize(this);
} }
/// <summary> /// <summary>

View File

@ -68,6 +68,7 @@ namespace Emby.Server.Implementations.EntryPoints
_timer.Dispose(); _timer.Dispose();
_timer = null; _timer = null;
} }
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -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);
} }
} }
} }

View File

@ -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);
} }
} }
} }

View File

@ -174,6 +174,7 @@ namespace Emby.Server.Implementations.EntryPoints
public void Dispose() public void Dispose()
{ {
Dispose(true); Dispose(true);
GC.SuppressFinalize(this);
} }
/// <summary> /// <summary>

View File

@ -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);
} }
} }
} }

View File

@ -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);
} }
} }
} }

View File

@ -65,6 +65,7 @@ namespace Emby.Server.Implementations.EntryPoints
public void Dispose() public void Dispose()
{ {
Dispose(true); Dispose(true);
GC.SuppressFinalize(this);
} }
/// <summary> /// <summary>

View File

@ -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);
} }
} }
} }

View File

@ -160,6 +160,7 @@ namespace Emby.Server.Implementations.EntryPoints
} }
_userDataManager.UserDataSaved -= _userDataManager_UserDataSaved; _userDataManager.UserDataSaved -= _userDataManager_UserDataSaved;
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -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>

View File

@ -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>

View File

@ -238,6 +238,7 @@ namespace Emby.Server.Implementations.IO
{ {
_disposed = true; _disposed = true;
DisposeTimer(); DisposeTimer();
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -70,6 +70,7 @@ namespace Emby.Server.Implementations.IO
{ {
mounter.Dispose(); mounter.Dispose();
} }
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -649,6 +649,7 @@ namespace Emby.Server.Implementations.IO
public void Dispose() public void Dispose()
{ {
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -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();

View File

@ -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()

View File

@ -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);
} }
} }
} }

View File

@ -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;

View File

@ -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

View File

@ -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)

View File

@ -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);
} }
} }

View File

@ -92,6 +92,7 @@ namespace Emby.Server.Implementations.Net
public void Dispose() public void Dispose()
{ {
Socket.Dispose(); Socket.Dispose();
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -271,6 +271,7 @@ namespace Emby.Server.Implementations.News
_timer.Dispose(); _timer.Dispose();
_timer = null; _timer = null;
} }
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -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()

View File

@ -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);
} }
} }
} }

View File

@ -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()
{
}
} }
} }

View File

@ -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>

View File

@ -283,6 +283,7 @@ namespace Emby.Server.Implementations.Session
{ {
socket.Closed -= connection_Closed; socket.Closed -= connection_Closed;
} }
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -217,6 +217,7 @@ namespace Emby.Server.Implementations.TV
public void Dispose() public void Dispose()
{ {
Dispose(true); Dispose(true);
GC.SuppressFinalize(this);
} }
/// <summary> /// <summary>

View File

@ -31,6 +31,7 @@ namespace Emby.Server.Implementations.Threading
public void Dispose() public void Dispose()
{ {
_timer.Dispose(); _timer.Dispose();
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -722,6 +722,7 @@ namespace Emby.Server.Implementations.Updates
public void Dispose() public void Dispose()
{ {
Dispose(true); Dispose(true);
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -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);
} }
} }
} }

View File

@ -314,6 +314,7 @@ namespace MediaBrowser.Api
public void Dispose() public void Dispose()
{ {
Dispose(true); Dispose(true);
GC.SuppressFinalize(this);
} }
} }

View File

@ -70,6 +70,7 @@ namespace MediaBrowser.Common.Net
{ {
_disposable.Dispose(); _disposable.Dispose();
} }
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -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.

View File

@ -30,6 +30,7 @@ namespace MediaBrowser.Common.Progress
public void Dispose() public void Dispose()
{ {
Dispose(true); Dispose(true);
GC.SuppressFinalize(this);
} }
/// <summary> /// <summary>

View File

@ -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.

View File

@ -23,6 +23,7 @@ namespace MediaBrowser.Controller.Drawing
{ {
Stream.Dispose(); Stream.Dispose();
} }
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -303,6 +303,7 @@ namespace MediaBrowser.Controller.Session
StopAutomaticProgress(); StopAutomaticProgress();
_sessionManager = null; _sessionManager = null;
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -59,6 +59,7 @@ namespace MediaBrowser.Model.Net
{ {
_disposable.Dispose(); _disposable.Dispose();
} }
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -1110,6 +1110,7 @@ namespace MediaBrowser.Providers.Manager
{ {
_disposeCancellationTokenSource.Cancel(); _disposeCancellationTokenSource.Cancel();
} }
GC.SuppressFinalize(this);
} }
} }
} }

View File

@ -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>

View File

@ -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)
{ {

View File

@ -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);
}
} }
} }
} }

View File

@ -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();
}
} }
} }

View File

@ -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)

View File

@ -1,3 +1,3 @@
using System.Reflection; using System.Reflection;
[assembly: AssemblyVersion("3.2.30.7")] [assembly: AssemblyVersion("3.2.30.8")]

View File

@ -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()

View File

@ -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