Replace the home-grown QTtyLocker with QLockFile
authorLaszlo Papp <lpapp@kde.org>
Wed, 6 Nov 2013 07:04:22 +0000 (07:04 +0000)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Wed, 6 Nov 2013 07:54:01 +0000 (08:54 +0100)
commited974e0b6cfda1b6b2ac33161ccf2db42b68c710
tree40dfe560176f6967e227c10ffedce844d503df22
parent26458aef426cde967433035d2af0ab244db3aec0
Replace the home-grown QTtyLocker with QLockFile

This can be more widely adopted later, and not just for the Linux backend. It
would be more than a few-liner change for stable, so this change change is kept
minimal (of course apart from the big file integration).

The only big problem with QLockFile currently is that we cannot change the file
name on the fly as it seems, just for construction. Even the copy constructor
and assignment operators are private. It means the class currently seems to be
non-eligible for QtSerialPort needs where it is necessary to change for open
anytime, and be accessible by open/serial for the before and after read/write
session for the same file name.

Also, I had to get rid of the QTemporary file internals because we cannot have
access to the internal engine with Qt 4. I also had to make a small thread class
for the protected msleep in QThread for Qt 4.

There was a small improvement for the hidden dependency problem with
gethostname. That was also sent to QtCore proper. Also, the windows backend for
the QLockFile class is not copied for simplicity. It would not be used as of
now.

There is also a short convenience around QLockFile established to handle
system-wide lock file paths. There is also some error handling added if the lock
directory paths are not readable or writable. This will end users identify the
problems like on Android.

Tested on Archlinux with Qt 4 and then 5.

Task-number: QTBUG-34474
Change-Id: I7adf29527c01ad331d3eeff5ae4c5a4113bde083
Reviewed-by: Sergey Belyashov <Sergey.Belyashov@gmail.com>
12 files changed:
dist/changes-5.2.0
src/serialport/qserialport_unix.cpp
src/serialport/qserialport_unix_p.h
src/serialport/qserialportinfo_unix.cpp
src/serialport/qt4support/include/QtCore/qlockfile.h [new file with mode: 0644]
src/serialport/qt4support/include/private/qlockfile_p.h [new file with mode: 0644]
src/serialport/qt4support/install-helper.pri
src/serialport/qt4support/src/qlockfile.cpp [new file with mode: 0644]
src/serialport/qt4support/src/qlockfile_unix.cpp [new file with mode: 0644]
src/serialport/qttylocker_unix.cpp [deleted file]
src/serialport/qttylocker_unix_p.h [deleted file]
src/serialport/serialport-lib.pri