From 705a6350598db62989bbc412385728ff17ff4796 Mon Sep 17 00:00:00 2001 From: Ari Vuollet Date: Mon, 13 Feb 2023 20:06:59 +0200 Subject: [PATCH] Fix LinuxFileSystemWatcher not working in sub-directories --- .../Platform/Linux/LinuxFileSystemWatcher.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Source/Engine/Platform/Linux/LinuxFileSystemWatcher.cpp b/Source/Engine/Platform/Linux/LinuxFileSystemWatcher.cpp index 93457623c..a695d9d3c 100644 --- a/Source/Engine/Platform/Linux/LinuxFileSystemWatcher.cpp +++ b/Source/Engine/Platform/Linux/LinuxFileSystemWatcher.cpp @@ -140,7 +140,7 @@ namespace FileSystemWatchers void AddDirWatcher(const int rootFileDesc, const String& path) { - auto watcher = New(path, false, rootFileDesc); + auto watcher = New(path, true, rootFileDesc); Pair subDir = Pair(path, watcher); } @@ -183,8 +183,16 @@ LinuxFileSystemWatcher::LinuxFileSystemWatcher(const String& directory, bool wit FileSystemWatchers::Watchers[WachedDirectory] = Pair>(rootWatcher, Pair(directory, this)); if (withSubDirs) { - FileSystemWatchers::RootWatchers[WachedDirectory] = this; - FileSystemWatchers::AddSubDirWatcher(WachedDirectory, directory); + if (rootWatcher == -1) + { + FileSystemWatchers::RootWatchers[WachedDirectory] = this; + FileSystemWatchers::AddSubDirWatcher(WachedDirectory, directory); + } + else + { + FileSystemWatchers::RootWatchers[WachedDirectory] = FileSystemWatchers::RootWatchers[rootWatcher]; + FileSystemWatchers::AddSubDirWatcher(rootWatcher, directory); + } } } FileSystemWatchers::Locker.Unlock();