Pārlūkot izejas kodu

Make ILiveStream an IDisposable

Patrick Barron 1 gadu atpakaļ
vecāks
revīzija
192559db32

+ 6 - 1
Emby.Server.Implementations/Library/ExclusiveLiveStream.cs

@@ -12,7 +12,7 @@ using MediaBrowser.Model.Dto;
 
 
 namespace Emby.Server.Implementations.Library
 namespace Emby.Server.Implementations.Library
 {
 {
-    public class ExclusiveLiveStream : ILiveStream
+    public sealed class ExclusiveLiveStream : ILiveStream
     {
     {
         private readonly Func<Task> _closeFn;
         private readonly Func<Task> _closeFn;
 
 
@@ -51,5 +51,10 @@ namespace Emby.Server.Implementations.Library
         {
         {
             return Task.CompletedTask;
             return Task.CompletedTask;
         }
         }
+
+        /// <inheritdoc />
+        public void Dispose()
+        {
+        }
     }
     }
 }
 }

+ 15 - 0
Emby.Server.Implementations/LiveTv/TunerHosts/LiveStream.cs

@@ -112,6 +112,21 @@ namespace Emby.Server.Implementations.LiveTv.TunerHosts
             return stream;
             return stream;
         }
         }
 
 
+        /// <inheritdoc />
+        public void Dispose()
+        {
+            Dispose(true);
+            GC.SuppressFinalize(this);
+        }
+
+        protected virtual void Dispose(bool dispose)
+        {
+            if (dispose)
+            {
+                LiveStreamCancellationTokenSource?.Dispose();
+            }
+        }
+
         protected async Task DeleteTempFiles(string path, int retryCount = 0)
         protected async Task DeleteTempFiles(string path, int retryCount = 0)
         {
         {
             if (retryCount == 0)
             if (retryCount == 0)

+ 2 - 1
MediaBrowser.Controller/Library/ILiveStream.cs

@@ -2,6 +2,7 @@
 
 
 #pragma warning disable CA1711, CS1591
 #pragma warning disable CA1711, CS1591
 
 
+using System;
 using System.IO;
 using System.IO;
 using System.Threading;
 using System.Threading;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
@@ -9,7 +10,7 @@ using MediaBrowser.Model.Dto;
 
 
 namespace MediaBrowser.Controller.Library
 namespace MediaBrowser.Controller.Library
 {
 {
-    public interface ILiveStream
+    public interface ILiveStream : IDisposable
     {
     {
         int ConsumerCount { get; set; }
         int ConsumerCount { get; set; }