浏览代码

fix recording timers

Luke Pulverenti 9 年之前
父节点
当前提交
70f75f8adb

+ 3 - 3
MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs

@@ -461,7 +461,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
             return CreateTimer(info, cancellationToken);
         }
 
-        public  Task CreateSeriesTimerAsync(SeriesTimerInfo info, CancellationToken cancellationToken)
+        public Task CreateSeriesTimerAsync(SeriesTimerInfo info, CancellationToken cancellationToken)
         {
             return CreateSeriesTimer(info, cancellationToken);
         }
@@ -1011,7 +1011,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
                     Action onStarted = () =>
                     {
                         timer.Status = RecordingStatus.InProgress;
-                        _timerProvider.AddOrUpdate(timer);
+                        _timerProvider.AddOrUpdate(timer, false);
 
                         result.Item3.Release();
                         isResourceOpen = false;
@@ -1060,7 +1060,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
             if (recordingStatus == RecordingStatus.Completed)
             {
                 timer.Status = RecordingStatus.Completed;
-                _timerProvider.AddOrUpdate(timer);
+                _timerProvider.AddOrUpdate(timer, false);
 
                 OnSuccessfulRecording(info.IsSeries, recordPath);
                 _timerProvider.Delete(timer);

+ 20 - 0
MediaBrowser.Server.Implementations/LiveTv/EmbyTV/TimerManager.cs

@@ -72,6 +72,26 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
             }
         }
 
+        public void AddOrUpdate(TimerInfo item, bool resetTimer)
+        {
+            if (resetTimer)
+            {
+                AddOrUpdate(item);
+                return;
+            }
+
+            var list = GetAll().ToList();
+
+            if (!list.Any(i => EqualityComparer(i, item)))
+            {
+                base.Add(item);
+            }
+            else
+            {
+                base.Update(item);
+            }
+        }
+
         public override void Add(TimerInfo item)
         {
             if (string.IsNullOrWhiteSpace(item.Id))