summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2017-04-02 19:44:10 +0300
committerDenis Shienkov <denis.shienkov@gmail.com>2017-04-09 16:57:33 +0000
commit1388d5f88224b15950d82075c527d20cea5dedd6 (patch)
tree76314a59c4574a45dff96440a57e3e49a25c0b16
parent93f41234b519d4a423f6ddd8ae67311f75b25f9c (diff)
downloadqtserialport-1388d5f88224b15950d82075c527d20cea5dedd6.tar.gz
Get rid of originalEventMask member
The event mask variable is used only once in process of initialization, so we do not need to keep this variable as the class member. Change-Id: I1f97a312cc92345d435dee821fefb8c2de33665e Reviewed-by: Anton Kudryavtsev <antkudr@mail.ru> Reviewed-by: Denis Shienkov <denis.shienkov@gmail.com>
-rw-r--r--src/serialport/qserialport.cpp1
-rw-r--r--src/serialport/qserialport_p.h5
-rw-r--r--src/serialport/qserialport_win.cpp14
3 files changed, 8 insertions, 12 deletions
diff --git a/src/serialport/qserialport.cpp b/src/serialport/qserialport.cpp
index 81beb2d..fa780f3 100644
--- a/src/serialport/qserialport.cpp
+++ b/src/serialport/qserialport.cpp
@@ -107,7 +107,6 @@ QSerialPortPrivate::QSerialPortPrivate()
, readStarted(false)
, notifier(0)
, startAsyncWriteTimer(0)
- , originalEventMask(0)
, triggeredEventMask(0)
#elif defined(Q_OS_UNIX)
, descriptor(-1)
diff --git a/src/serialport/qserialport_p.h b/src/serialport/qserialport_p.h
index b0f3f0c..7512da0 100644
--- a/src/serialport/qserialport_p.h
+++ b/src/serialport/qserialport_p.h
@@ -157,6 +157,8 @@ public:
qint64 writeData(const char *data, qint64 maxSize);
+ bool initialize(QIODevice::OpenMode mode);
+
static QString portNameToSystemLocation(const QString &port);
static QString portNameFromSystemLocation(const QString &location);
@@ -176,7 +178,6 @@ public:
#if defined(Q_OS_WIN32)
- bool initialize();
bool setDcb(DCB *dcb);
bool getDcb(DCB *dcb);
OVERLAPPED *waitForNotified(int msecs);
@@ -208,14 +209,12 @@ public:
OVERLAPPED communicationOverlapped;
OVERLAPPED readCompletionOverlapped;
OVERLAPPED writeCompletionOverlapped;
- DWORD originalEventMask;
DWORD triggeredEventMask;
#elif defined(Q_OS_UNIX)
static qint32 settingFromBaudRate(qint32 baudRate);
- bool initialize(QIODevice::OpenMode mode);
bool setTermios(const termios *tio);
bool getTermios(termios *tio);
diff --git a/src/serialport/qserialport_win.cpp b/src/serialport/qserialport_win.cpp
index 84bf5b9..95edf2d 100644
--- a/src/serialport/qserialport_win.cpp
+++ b/src/serialport/qserialport_win.cpp
@@ -176,12 +176,9 @@ static inline void qt_set_flowcontrol(DCB *dcb, QSerialPort::FlowControl flowcon
bool QSerialPortPrivate::open(QIODevice::OpenMode mode)
{
DWORD desiredAccess = 0;
- originalEventMask = 0;
- if (mode & QIODevice::ReadOnly) {
+ if (mode & QIODevice::ReadOnly)
desiredAccess |= GENERIC_READ;
- originalEventMask |= EV_RXCHAR;
- }
if (mode & QIODevice::WriteOnly)
desiredAccess |= GENERIC_WRITE;
@@ -193,7 +190,7 @@ bool QSerialPortPrivate::open(QIODevice::OpenMode mode)
return false;
}
- if (initialize())
+ if (initialize(mode))
return true;
::CloseHandle(handle);
@@ -658,7 +655,7 @@ qint64 QSerialPortPrivate::queuedBytesCount(QSerialPort::Direction direction) co
: ((direction == QSerialPort::Output) ? comstat.cbOutQue : -1);
}
-inline bool QSerialPortPrivate::initialize()
+inline bool QSerialPortPrivate::initialize(QIODevice::OpenMode mode)
{
Q_Q(QSerialPort);
@@ -691,7 +688,8 @@ inline bool QSerialPortPrivate::initialize()
return false;
}
- if (!::SetCommMask(handle, originalEventMask)) {
+ const DWORD eventMask = (mode & QIODevice::ReadOnly) ? EV_RXCHAR : 0;
+ if (!::SetCommMask(handle, eventMask)) {
setError(getSystemError());
return false;
}
@@ -702,7 +700,7 @@ inline bool QSerialPortPrivate::initialize()
notifier->setHandle(handle);
notifier->setEnabled(true);
- if ((originalEventMask & EV_RXCHAR) && !startAsyncCommunication())
+ if ((eventMask & EV_RXCHAR) && !startAsyncCommunication())
return false;
return true;