mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05:00 
			
		
		
		
	Fix up directory watchers
This commit is contained in:
		
							parent
							
								
									ef07c2e6ab
								
							
						
					
					
						commit
						da618f13e2
					
				@ -28,11 +28,13 @@ namespace MediaBrowser.Common.Extensions
 | 
			
		||||
        /// <returns></returns>
 | 
			
		||||
        public static bool ContainsParentFolder(this List<string> lst, string path)
 | 
			
		||||
        {
 | 
			
		||||
            path = path.TrimEnd('\\');
 | 
			
		||||
            foreach (var str in lst)
 | 
			
		||||
            {
 | 
			
		||||
                //this should be a little quicker than examining each actual parent folder...
 | 
			
		||||
                if (path.Equals(str,StringComparison.OrdinalIgnoreCase) 
 | 
			
		||||
                    || (path.StartsWith(str, StringComparison.OrdinalIgnoreCase) && path[str.Length-1] == '\\')) return true;
 | 
			
		||||
                var compare = str.TrimEnd('\\');
 | 
			
		||||
                if (path.Equals(compare,StringComparison.OrdinalIgnoreCase) 
 | 
			
		||||
                    || (path.StartsWith(compare, StringComparison.OrdinalIgnoreCase) && path[compare.Length] == '\\')) return true;
 | 
			
		||||
            }
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -62,11 +62,9 @@ namespace MediaBrowser.Controller.IO
 | 
			
		||||
            Logger.LogDebugInfo("****** Watcher sees change of type " + e.ChangeType.ToString() + " to " + e.FullPath);
 | 
			
		||||
            lock (affectedPaths)
 | 
			
		||||
            {
 | 
			
		||||
                if (!affectedPaths.Contains(e.FullPath))
 | 
			
		||||
                {
 | 
			
		||||
                    Logger.LogDebugInfo("****** Adding " + e.FullPath + " to affected paths.");
 | 
			
		||||
                    affectedPaths.Add(e.FullPath);
 | 
			
		||||
                }
 | 
			
		||||
                //Since we're watching created, deleted and renamed we always want the parent of the item to be the affected path
 | 
			
		||||
                var affectedPath = Path.GetDirectoryName(e.FullPath);
 | 
			
		||||
                
 | 
			
		||||
                if (e.ChangeType == WatcherChangeTypes.Renamed)
 | 
			
		||||
                {
 | 
			
		||||
                    var renamedArgs = e as RenamedEventArgs;
 | 
			
		||||
@ -76,6 +74,15 @@ namespace MediaBrowser.Controller.IO
 | 
			
		||||
                    affectedPaths.Remove(renamedArgs.OldFullPath);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                //If anything underneath this path was already marked as affected - remove it as it will now get captured by this one
 | 
			
		||||
                affectedPaths.RemoveAll(p => p.StartsWith(e.FullPath, StringComparison.OrdinalIgnoreCase));
 | 
			
		||||
                
 | 
			
		||||
                if (!affectedPaths.ContainsParentFolder(affectedPath))
 | 
			
		||||
                {
 | 
			
		||||
                    Logger.LogDebugInfo("****** Adding " + affectedPath + " to affected paths.");
 | 
			
		||||
                    affectedPaths.Add(affectedPath);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (updateTimer == null)
 | 
			
		||||
@ -125,7 +132,7 @@ namespace MediaBrowser.Controller.IO
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            foreach (var p in paths) Logger.LogDebugInfo("*********  "+ p + " reports change.");
 | 
			
		||||
            foreach (var i in itemsToRefresh) Logger.LogDebugInfo("*********  "+i.Name + " will be refreshed.");
 | 
			
		||||
            foreach (var i in itemsToRefresh) Logger.LogDebugInfo("*********  "+i.Name + " ("+ i.Path + ") will be refreshed.");
 | 
			
		||||
            return Task.WhenAll(itemsToRefresh.Select(i => i.ChangedExternally()));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user