diff options
author | Eike Ziller <eike.ziller@theqtcompany.com> | 2014-12-01 09:10:43 +0100 |
---|---|---|
committer | Jani Heikkinen <jani.heikkinen@theqtcompany.com> | 2014-12-01 20:03:42 +0100 |
commit | 03b5ecce4ab8dc879e27dc8f07d6f3ef846efde0 (patch) | |
tree | a5339f30a93619aeefd0abf6121bb18408dd412a /src/corelib/io | |
parent | a2da88712f1e057747f68a28361b300faac5e605 (diff) |
FSEvents file system watcher: Do not watch whole parent hierarchies.
Unfortunately the FSEvents implementation for watching parent
hierarchies has the major flaw, that watching a path will then
create watches for the whole parent hierarchy even if that
hierarchy is already watched. Watching /A/B/C and /A/B/D will
create two watches each for /A and /A/B. This leads to an explosion
of open file handles.
Luckily we do not need to watch the parent hierarchy since this
is not a supported usecase of QFileSystemWatcher anyhow, so just don't
do it.
Task-number: QTCREATORBUG-13531
Change-Id: I9ecb5f08e4be35e4fbd58a7ca3155867fcb1589f
Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
Diffstat (limited to 'src/corelib/io')
-rw-r--r-- | src/corelib/io/qfilesystemwatcher_fsevents.mm | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/corelib/io/qfilesystemwatcher_fsevents.mm b/src/corelib/io/qfilesystemwatcher_fsevents.mm index eebca1cfb0..90ef7a6336 100644 --- a/src/corelib/io/qfilesystemwatcher_fsevents.mm +++ b/src/corelib/io/qfilesystemwatcher_fsevents.mm @@ -518,7 +518,6 @@ bool QFseventsFileSystemWatcherEngine::startStream() NULL }; const CFAbsoluteTime latency = .5; // in seconds - FSEventStreamCreateFlags flags = kFSEventStreamCreateFlagWatchRoot; // Never start with kFSEventStreamEventIdSinceNow, because this will generate an invalid // soft-assert in FSEventStreamFlushSync in CarbonCore when no event occurred. @@ -530,7 +529,7 @@ bool QFseventsFileSystemWatcherEngine::startStream() reinterpret_cast<CFArrayRef>(pathsToWatch), lastReceivedEvent, latency, - flags); + FSEventStreamCreateFlags(0)); if (!stream) { DEBUG() << "Failed to create stream!"; |