There is a hard limit on the number of file handles that can be open at one point per process on Mac OS X (e.g. it's 2560 on Mac OS X Snow Leopard Server, as shown by ulimit -a). Opening one or several .qmlproject's with a large number of directories to watch easily exceeds this. The results are crashes later on, e.g. when threads cannot be created any more.
This patch implements a heuristic that the file system watcher used for .qmlproject files never uses more than half the number of available file handles. It also increases the number from rlim_cur to rlim_max - the old code in main.cpp failed, see last section in
http://developer.apple.com/maac/library/documentation/Darwin/Reference/ManPages/man2/setrlimit.2.html
for details.
Reviewed-by: ckamm
Task-number: QTCREATORBUG-1487
Task-number: QTCREATORBUG-1486
Only watch directories, and not single files. Also, share one
FileSystemWatcher between projects & FileFilter items.
This fixes the issue that the process runs out of file handles e.g.
when loading a .qmlproject file containing all of qt examples & demos.
Basic implementation of FileSystemWatcher was copied from
ProjectExplorer::FileWatcher - however the FileWatcher is only
for files (and not directories), and also monitors the last
change date etc.