diff options
Diffstat (limited to 'src/serialport/qserialport_unix.cpp')
-rw-r--r-- | src/serialport/qserialport_unix.cpp | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/src/serialport/qserialport_unix.cpp b/src/serialport/qserialport_unix.cpp index a00d0db..1ba23dd 100644 --- a/src/serialport/qserialport_unix.cpp +++ b/src/serialport/qserialport_unix.cpp @@ -199,9 +199,8 @@ bool QSerialPortPrivate::open(QIODevice::OpenMode mode) } QScopedPointer<QLockFile> newLockFileScopedPointer(new QLockFile(lockFilePath)); - lockFileScopedPointer.swap(newLockFileScopedPointer); - if (lockFileScopedPointer->isLocked()) { + if (!newLockFileScopedPointer->tryLock()) { q->setError(QSerialPort::PermissionError); return false; } @@ -227,12 +226,6 @@ bool QSerialPortPrivate::open(QIODevice::OpenMode mode) return false; } - lockFileScopedPointer->lock(); - if (!lockFileScopedPointer->isLocked()) { - q->setError(QSerialPort::PermissionError); - return false; - } - #ifdef TIOCEXCL if (::ioctl(descriptor, TIOCEXCL) == -1) q->setError(decodeSystemError()); @@ -268,6 +261,8 @@ bool QSerialPortPrivate::open(QIODevice::OpenMode mode) if ((flags & O_WRONLY) == 0) setReadNotificationEnabled(true); + lockFileScopedPointer.swap(newLockFileScopedPointer); + return true; } @@ -306,8 +301,7 @@ void QSerialPortPrivate::close() if (qt_safe_close(descriptor) == -1) q->setError(decodeSystemError()); - if (lockFileScopedPointer->isLocked()) - lockFileScopedPointer->unlock(); + lockFileScopedPointer.reset(0); descriptor = -1; pendingBytesWritten = 0; |