diff options
author | Alex Blasche <alexander.blasche@digia.com> | 2014-10-10 14:41:59 +0200 |
---|---|---|
committer | Alex Blasche <alexander.blasche@digia.com> | 2014-10-13 09:31:28 +0200 |
commit | fa7615b4e98ec7319e6a264c2a6686949037f6bd (patch) | |
tree | 54931c510fd78cea5a40d5db6e2eb4197b4f02b3 /src | |
parent | 0a3b0177116fd0033c315968e7a3d559ad043c5d (diff) |
Fix QBluetoothSocket::isReadable()/isOpen()/isWritable()
Change-Id: Ifd6b5ed8176aa7959ed8da0edc762266aa2bd6fa
Task-number: QTBUG-32704
Reviewed-by: Timur Pocheptsov <Timur.Pocheptsov@digia.com>
Reviewed-by: Alex Blasche <alexander.blasche@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/bluetooth/qbluetoothsocket.cpp | 10 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothsocket_android.cpp | 6 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothsocket_bluez.cpp | 2 | ||||
-rw-r--r-- | src/bluetooth/qbluetoothsocket_qnx.cpp | 1 |
4 files changed, 12 insertions, 7 deletions
diff --git a/src/bluetooth/qbluetoothsocket.cpp b/src/bluetooth/qbluetoothsocket.cpp index 9c3890aa..3c0b4239 100644 --- a/src/bluetooth/qbluetoothsocket.cpp +++ b/src/bluetooth/qbluetoothsocket.cpp @@ -244,7 +244,7 @@ QBluetoothSocket::QBluetoothSocket(QBluetoothServiceInfo::Protocol socketType, Q Q_D(QBluetoothSocket); d->ensureNativeSocket(socketType); - setOpenMode(QIODevice::ReadWrite); + setOpenMode(QIODevice::NotOpen); } /*! @@ -254,7 +254,7 @@ QBluetoothSocket::QBluetoothSocket(QObject *parent) : QIODevice(parent), d_ptr(new QBluetoothSocketPrivate) { d_ptr->q_ptr = this; - setOpenMode(QIODevice::ReadWrite); + setOpenMode(QIODevice::NotOpen); } /*! @@ -322,9 +322,6 @@ void QBluetoothSocket::connectToService(const QBluetoothServiceInfo &service, Op setSocketError(QBluetoothSocket::OperationError); return; } - - setOpenMode(openMode); - #if defined(QT_QNX_BLUETOOTH) || defined(QT_ANDROID_BLUETOOTH) if (!d->ensureNativeSocket(service.socketProtocol())) { d->errorString = tr("Socket type not supported"); @@ -604,6 +601,8 @@ void QBluetoothSocket::abort() return; Q_D(QBluetoothSocket); + setOpenMode(QIODevice::NotOpen); + setSocketState(ClosingState); d->abort(); #ifndef QT_ANDROID_BLUETOOTH @@ -679,6 +678,7 @@ void QBluetoothSocket::close() return; Q_D(QBluetoothSocket); + setOpenMode(QIODevice::NotOpen); setSocketState(ClosingState); d->close(); diff --git a/src/bluetooth/qbluetoothsocket_android.cpp b/src/bluetooth/qbluetoothsocket_android.cpp index ce68d236..4faf2f19 100644 --- a/src/bluetooth/qbluetoothsocket_android.cpp +++ b/src/bluetooth/qbluetoothsocket_android.cpp @@ -331,6 +331,9 @@ void QBluetoothSocketPrivate::connectToServiceConc(const QBluetoothAddress &addr return; } + // only unbuffered behavior supported at this stage + q->setOpenMode(QIODevice::ReadWrite|QIODevice::Unbuffered); + q->setSocketState(QBluetoothSocket::ConnectedState); emit q->connected(); } @@ -494,6 +497,7 @@ void QBluetoothSocketPrivate::inputThreadError(int errorCode) } q->setSocketState(QBluetoothSocket::UnconnectedState); + q->setOpenMode(QIODevice::NotOpen); emit q->disconnected(); } @@ -569,7 +573,7 @@ bool QBluetoothSocketPrivate::setSocketDescriptor(const QAndroidJniObject &socke q->setSocketState(socketState); - q->setOpenMode(openMode); + q->setOpenMode(openMode | QIODevice::Unbuffered); if (openMode == QBluetoothSocket::ConnectedState) emit q->connected(); diff --git a/src/bluetooth/qbluetoothsocket_bluez.cpp b/src/bluetooth/qbluetoothsocket_bluez.cpp index f49f7253..9eedc492 100644 --- a/src/bluetooth/qbluetoothsocket_bluez.cpp +++ b/src/bluetooth/qbluetoothsocket_bluez.cpp @@ -124,7 +124,6 @@ bool QBluetoothSocketPrivate::ensureNativeSocket(QBluetoothServiceInfo::Protocol void QBluetoothSocketPrivate::connectToService(const QBluetoothAddress &address, quint16 port, QIODevice::OpenMode openMode) { Q_Q(QBluetoothSocket); - Q_UNUSED(openMode); int result = -1; if (socket == -1 && !ensureNativeSocket(socketType)) { @@ -179,6 +178,7 @@ void QBluetoothSocketPrivate::connectToService(const QBluetoothAddress &address, if (result >= 0 || (result == -1 && errno == EINPROGRESS)) { connecting = true; q->setSocketState(QBluetoothSocket::ConnectingState); + q->setOpenMode(openMode); } else { errorString = qt_error_string(errno); q->setSocketError(QBluetoothSocket::UnknownSocketError); diff --git a/src/bluetooth/qbluetoothsocket_qnx.cpp b/src/bluetooth/qbluetoothsocket_qnx.cpp index 5926d8ad..0d698ee5 100644 --- a/src/bluetooth/qbluetoothsocket_qnx.cpp +++ b/src/bluetooth/qbluetoothsocket_qnx.cpp @@ -396,6 +396,7 @@ void QBluetoothSocketPrivate::controlReply(ppsResult result) connectWriteNotifier->setEnabled(true); readNotifier->setEnabled(true); + q->setOpenMode(QIODevice::ReadWrite); state = QBluetoothSocket::ConnectedState; emit q->connected(); ppsRegisterForEvent(QStringLiteral("service_disconnected"),this); |