QNX: Use inotify on QNX systems that support it
Change-Id: Ia9bf8d3c202b17746036e203268ef6229aaa900d Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Rafael Roquetto <rafael.roquetto@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>bb10
parent
9f390bb686
commit
fc0cbef595
|
|
@ -124,7 +124,7 @@ win32 {
|
|||
SOURCES += io/qstandardpaths_unix.cpp
|
||||
}
|
||||
|
||||
linux-* {
|
||||
linux-*|if(qnx:contains(QT_CONFIG, inotify)) {
|
||||
SOURCES += io/qfilesystemwatcher_inotify.cpp
|
||||
HEADERS += io/qfilesystemwatcher_inotify_p.h
|
||||
}
|
||||
|
|
|
|||
|
|
@ -51,11 +51,14 @@
|
|||
#include <qset.h>
|
||||
#include <qtimer.h>
|
||||
|
||||
#if defined(Q_OS_LINUX) || (defined(Q_OS_QNX) && !defined(QT_NO_INOTIFY))
|
||||
#define USE_INOTIFY
|
||||
#endif
|
||||
|
||||
#include "qfilesystemwatcher_polling_p.h"
|
||||
#if defined(Q_OS_WIN)
|
||||
# include "qfilesystemwatcher_win_p.h"
|
||||
#elif defined(Q_OS_LINUX)
|
||||
#elif defined(USE_INOTIFY)
|
||||
# include "qfilesystemwatcher_inotify_p.h"
|
||||
#elif defined(Q_OS_FREEBSD) || defined(Q_OS_MAC)
|
||||
# include "qfilesystemwatcher_kqueue_p.h"
|
||||
|
|
@ -67,7 +70,7 @@ QFileSystemWatcherEngine *QFileSystemWatcherPrivate::createNativeEngine(QObject
|
|||
{
|
||||
#if defined(Q_OS_WIN)
|
||||
return new QWindowsFileSystemWatcherEngine(parent);
|
||||
#elif defined(Q_OS_LINUX)
|
||||
#elif defined(USE_INOTIFY)
|
||||
// there is a chance that inotify may fail on Linux pre-2.6.13 (August
|
||||
// 2005), so we can't just new inotify directly.
|
||||
return QInotifyFileSystemWatcherEngine::create(parent);
|
||||
|
|
|
|||
|
|
@ -52,12 +52,20 @@
|
|||
#include <qsocketnotifier.h>
|
||||
#include <qvarlengtharray.h>
|
||||
|
||||
#if defined(Q_OS_LINUX)
|
||||
#include <sys/syscall.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#endif
|
||||
|
||||
#if defined(QT_NO_INOTIFY)
|
||||
|
||||
#if defined(Q_OS_QNX)
|
||||
// These files should only be compiled on QNX if the inotify headers are found
|
||||
#error "Should not get here."
|
||||
#endif
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#if defined(__i386__)
|
||||
|
|
|
|||
|
|
@ -183,6 +183,9 @@ void tst_QFileSystemWatcher::basicTest()
|
|||
// change the permissions, should get a signal from the watcher
|
||||
testFile.setPermissions(QFile::ReadOwner);
|
||||
|
||||
// IN_ATTRIB doesn't work on QNX, so skip this test
|
||||
#if !defined(Q_OS_QNX)
|
||||
|
||||
// waiting max 5 seconds for notification for file permission modification to trigger
|
||||
QTRY_COMPARE(changedSpy.count(), 1);
|
||||
QCOMPARE(changedSpy.at(0).count(), 1);
|
||||
|
|
@ -190,6 +193,8 @@ void tst_QFileSystemWatcher::basicTest()
|
|||
fileName = changedSpy.at(0).at(0).toString();
|
||||
QCOMPARE(fileName, testFile.fileName());
|
||||
|
||||
#endif
|
||||
|
||||
changedSpy.clear();
|
||||
|
||||
// remove the watch and modify file permissions, should not get a signal from the watcher
|
||||
|
|
|
|||
Loading…
Reference in New Issue