diff options
Diffstat (limited to 'src/network/socket/qnativesocketengine_winrt.cpp')
-rw-r--r-- | src/network/socket/qnativesocketengine_winrt.cpp | 37 |
1 files changed, 10 insertions, 27 deletions
diff --git a/src/network/socket/qnativesocketengine_winrt.cpp b/src/network/socket/qnativesocketengine_winrt.cpp index 0625ea65da..38c2b6e8c0 100644 --- a/src/network/socket/qnativesocketengine_winrt.cpp +++ b/src/network/socket/qnativesocketengine_winrt.cpp @@ -1250,20 +1250,22 @@ void QNativeSocketEngine::handleConnectOpFinished(bool success, QAbstractSocket: void QNativeSocketEngine::handleNewDatagrams(const QList<WinRtDatagram> &datagrams) { Q_D(QNativeSocketEngine); - // Defer putting the datagrams into the list until the next event loop iteration - // (where the readyRead signal is emitted as well) - QMetaObject::invokeMethod(this, "putIntoPendingDatagramsList", Qt::QueuedConnection, - Q_ARG(QList<WinRtDatagram>, datagrams)); + QMutexLocker locker(&d->readMutex); + d->pendingDatagrams.append(datagrams); if (d->notifyOnRead) emit readReady(); } void QNativeSocketEngine::handleNewData(const QVector<QByteArray> &data) { - // Defer putting the data into the list until the next event loop iteration - // (where the readyRead signal is emitted as well) - QMetaObject::invokeMethod(this, "putIntoPendingData", Qt::QueuedConnection, - Q_ARG(QVector<QByteArray>, data)); + Q_D(QNativeSocketEngine); + QMutexLocker locker(&d->readMutex); + d->pendingData.append(data); + for (const QByteArray &newData : data) + d->bytesAvailable += newData.length(); + locker.unlock(); + if (d->notifyOnRead) + readNotification(); } void QNativeSocketEngine::handleTcpError(QAbstractSocket::SocketError error) @@ -1284,25 +1286,6 @@ void QNativeSocketEngine::handleTcpError(QAbstractSocket::SocketError error) emit readReady(); } -void QNativeSocketEngine::putIntoPendingDatagramsList(const QList<WinRtDatagram> &datagrams) -{ - Q_D(QNativeSocketEngine); - QMutexLocker locker(&d->readMutex); - d->pendingDatagrams.append(datagrams); -} - -void QNativeSocketEngine::putIntoPendingData(const QVector<QByteArray> &data) -{ - Q_D(QNativeSocketEngine); - QMutexLocker locker(&d->readMutex); - d->pendingData.append(data); - for (const QByteArray &newData : data) - d->bytesAvailable += newData.length(); - locker.unlock(); - if (d->notifyOnRead) - readNotification(); -} - bool QNativeSocketEnginePrivate::createNewSocket(QAbstractSocket::SocketType socketType, QAbstractSocket::NetworkLayerProtocol &socketProtocol) { Q_UNUSED(socketProtocol); |