summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlex Blasche <alexander.blasche@digia.com>2014-10-10 14:41:59 +0200
committerAlex Blasche <alexander.blasche@digia.com>2014-10-13 09:31:28 +0200
commitfa7615b4e98ec7319e6a264c2a6686949037f6bd (patch)
tree54931c510fd78cea5a40d5db6e2eb4197b4f02b3 /src
parent0a3b0177116fd0033c315968e7a3d559ad043c5d (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.cpp10
-rw-r--r--src/bluetooth/qbluetoothsocket_android.cpp6
-rw-r--r--src/bluetooth/qbluetoothsocket_bluez.cpp2
-rw-r--r--src/bluetooth/qbluetoothsocket_qnx.cpp1
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);