mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-10-31 10:37:22 -04:00 
			
		
		
		
	
						commit
						abebb17e3a
					
				| @ -126,9 +126,10 @@ namespace MediaBrowser.Api | ||||
|         /// <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) | ||||
|         { | ||||
|             var jobCount = _activeTranscodingJobs.Count; | ||||
|             var list = _activeTranscodingJobs.ToList(); | ||||
|             var jobCount = list.Count; | ||||
| 
 | ||||
|             Parallel.ForEach(_activeTranscodingJobs.ToList(), j => KillTranscodingJob(j, false, path => true)); | ||||
|             Parallel.ForEach(list, j => KillTranscodingJob(j, false, path => true)); | ||||
| 
 | ||||
|             // Try to allow for some time to kill the ffmpeg processes and delete the partial stream files | ||||
|             if (jobCount > 0) | ||||
|  | ||||
| @ -175,7 +175,9 @@ namespace MediaBrowser.Api.Playback.Progressive | ||||
|                         ResponseHeaders = responseHeaders, | ||||
|                         ContentType = contentType, | ||||
|                         IsHeadRequest = isHeadRequest, | ||||
|                         Path = outputPath | ||||
|                         Path = outputPath, | ||||
|                         FileShare = FileShare.ReadWrite | ||||
| 
 | ||||
|                     }).ConfigureAwait(false); | ||||
|                 } | ||||
|                 finally | ||||
| @ -187,8 +189,7 @@ namespace MediaBrowser.Api.Playback.Progressive | ||||
|             // Need to start ffmpeg | ||||
|             try | ||||
|             { | ||||
|                 return await GetStreamResult(state, responseHeaders, isHeadRequest, cancellationTokenSource) | ||||
|                             .ConfigureAwait(false); | ||||
|                 return await GetStreamResult(state, responseHeaders, isHeadRequest, cancellationTokenSource).ConfigureAwait(false); | ||||
|             } | ||||
|             catch | ||||
|             { | ||||
|  | ||||
| @ -208,7 +208,7 @@ namespace MediaBrowser.Api.Playback | ||||
| 
 | ||||
|         private async void DisposeLiveStream() | ||||
|         { | ||||
|             if (MediaSource.RequiresClosing && string.IsNullOrWhiteSpace(Request.LiveStreamId)) | ||||
|             if (MediaSource.RequiresClosing && string.IsNullOrWhiteSpace(Request.LiveStreamId) && !string.IsNullOrWhiteSpace(MediaSource.LiveStreamId)) | ||||
|             { | ||||
|                 try | ||||
|                 { | ||||
|  | ||||
| @ -133,6 +133,9 @@ namespace MediaBrowser.Providers.Manager | ||||
|             source = memoryStream; | ||||
| 
 | ||||
|             var currentImage = GetCurrentImage(item, type, index); | ||||
|             var currentImageIsLocalFile = currentImage != null && currentImage.IsLocalFile; | ||||
|             var currentImagePath = currentImage == null ? null : currentImage.Path; | ||||
| 
 | ||||
|             var savedPaths = new List<string>(); | ||||
| 
 | ||||
|             using (source) | ||||
| @ -157,9 +160,9 @@ namespace MediaBrowser.Providers.Manager | ||||
|             SetImagePath(item, type, imageIndex, savedPaths[0]); | ||||
| 
 | ||||
|             // Delete the current path | ||||
|             if (currentImage != null && currentImage.IsLocalFile && !savedPaths.Contains(currentImage.Path, StringComparer.OrdinalIgnoreCase)) | ||||
|             if (currentImageIsLocalFile && !savedPaths.Contains(currentImagePath, StringComparer.OrdinalIgnoreCase)) | ||||
|             { | ||||
|                 var currentPath = currentImage.Path; | ||||
|                 var currentPath = currentImagePath; | ||||
| 
 | ||||
|                 _logger.Debug("Deleting previous image {0}", currentPath); | ||||
| 
 | ||||
|  | ||||
| @ -39,6 +39,20 @@ namespace MediaBrowser.Providers.TV | ||||
|                     updateType |= ItemUpdateType.MetadataImport; | ||||
|                 } | ||||
|             } | ||||
|             if (updateType <= ItemUpdateType.None) | ||||
|             { | ||||
|                 if (item.SeriesId != item.FindSeriesId()) | ||||
|                 { | ||||
|                     updateType |= ItemUpdateType.MetadataImport; | ||||
|                 } | ||||
|             } | ||||
|             if (updateType <= ItemUpdateType.None) | ||||
|             { | ||||
|                 if (item.SeasonId != item.FindSeasonId()) | ||||
|                 { | ||||
|                     updateType |= ItemUpdateType.MetadataImport; | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return updateType; | ||||
|         } | ||||
|  | ||||
| @ -49,6 +49,13 @@ namespace MediaBrowser.Providers.TV | ||||
|                     updateType |= ItemUpdateType.MetadataImport; | ||||
|                 } | ||||
|             } | ||||
|             if (updateType <= ItemUpdateType.None) | ||||
|             { | ||||
|                 if (item.SeriesId != item.FindSeriesId()) | ||||
|                 { | ||||
|                     updateType |= ItemUpdateType.MetadataImport; | ||||
|                 } | ||||
|             } | ||||
| 
 | ||||
|             return updateType; | ||||
|         } | ||||
|  | ||||
| @ -446,8 +446,31 @@ namespace MediaBrowser.Server.Implementations.Library | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         private async Task CloseLiveStreamWithProvider(IMediaSourceProvider provider, string streamId, CancellationToken cancellationToken) | ||||
|         { | ||||
|             _logger.Info("Closing live stream {0} with provider {1}", streamId, provider.GetType().Name); | ||||
| 
 | ||||
|             try | ||||
|             { | ||||
|                 await provider.CloseMediaSource(streamId, cancellationToken).ConfigureAwait(false); | ||||
|             } | ||||
|             catch (NotImplementedException) | ||||
|             { | ||||
| 
 | ||||
|             } | ||||
|             catch (Exception ex) | ||||
|             { | ||||
|                 _logger.ErrorException("Error closing live stream {0}", ex, streamId); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public async Task CloseLiveStream(string id, CancellationToken cancellationToken) | ||||
|         { | ||||
|             if (string.IsNullOrWhiteSpace(id)) | ||||
|             { | ||||
|                 throw new ArgumentNullException("id"); | ||||
|             } | ||||
| 
 | ||||
|             await _liveStreamSemaphore.WaitAsync(cancellationToken).ConfigureAwait(false); | ||||
| 
 | ||||
|             try | ||||
| @ -459,7 +482,7 @@ namespace MediaBrowser.Server.Implementations.Library | ||||
|                     { | ||||
|                         var tuple = GetProvider(id); | ||||
| 
 | ||||
|                         await tuple.Item1.CloseMediaSource(tuple.Item2, cancellationToken).ConfigureAwait(false); | ||||
|                         await CloseLiveStreamWithProvider(tuple.Item1, tuple.Item2, cancellationToken).ConfigureAwait(false); | ||||
|                     } | ||||
|                 } | ||||
| 
 | ||||
|  | ||||
| @ -242,12 +242,6 @@ | ||||
|     <Content Include="dashboard-ui\css\images\logo536.png"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|     <Content Include="dashboard-ui\css\images\splash.jpg"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|     <Content Include="dashboard-ui\css\images\splash720.jpg"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|     <Content Include="dashboard-ui\css\images\touchicon144.png"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
| @ -386,6 +380,9 @@ | ||||
|     <Content Include="dashboard-ui\serversecurity.html"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|     <Content Include="dashboard-ui\serviceworker.js"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|     <Content Include="dashboard-ui\shared.html"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
| @ -785,9 +782,6 @@ | ||||
|     <Content Include="dashboard-ui\css\images\fresh.png"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|     <Content Include="dashboard-ui\css\images\items\searchhintsv2\tv.png"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|     <Content Include="dashboard-ui\css\images\media\chapterflyout.png"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
| @ -1347,11 +1341,6 @@ | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Content Include="dashboard-ui\css\images\checkmarkblack.png"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Content Include="dashboard-ui\log.html"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
| @ -1405,11 +1394,6 @@ | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Content Include="dashboard-ui\css\images\notifications\download.png"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Content Include="dashboard-ui\css\images\supporter\supporterbadge.png"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
| @ -1425,24 +1409,6 @@ | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Content Include="dashboard-ui\css\images\notifications\done.png"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|     <Content Include="dashboard-ui\css\images\notifications\error.png"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Content Include="dashboard-ui\css\images\notifications\cancelled.png"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Content Include="dashboard-ui\css\images\notifications\info.png"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <Content Include="dashboard-ui\itemdetails.html"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
| @ -1487,9 +1453,6 @@ | ||||
|     <Content Include="dashboard-ui\about.html"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|     <Content Include="dashboard-ui\css\images\stars.png"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|     <Content Include="dashboard-ui\scripts\mediaplayer.js"> | ||||
|       <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> | ||||
|     </Content> | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| using System.Reflection; | ||||
| 
 | ||||
| //[assembly: AssemblyVersion("3.1.*")] | ||||
| [assembly: AssemblyVersion("3.1.80")] | ||||
| [assembly: AssemblyVersion("3.1.*")] | ||||
| //[assembly: AssemblyVersion("3.1.80")] | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user