summaryrefslogtreecommitdiff
path: root/src/serialport/qserialport_unix.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/serialport/qserialport_unix.cpp')
-rw-r--r--src/serialport/qserialport_unix.cpp14
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;