summaryrefslogtreecommitdiffstats
path: root/src/network
diff options
context:
space:
mode:
authorOliver Wolff <oliver.wolff@theqtcompany.com>2015-11-10 08:28:12 +0100
committerAndrew Knight <andrew.knight@intopalo.com>2015-11-18 06:05:44 +0000
commit08f9a1bd6ab9b1777ee5ba163d75e5c848c39eb4 (patch)
treee8eaa04f0fdc034d9d3938e61a093cee12f6cf6e /src/network
parentaecf3006bddb959795d03dd72d9c520e49713913 (diff)
winrt: Fixed listening to tcp socket
For some reason add_ConnectionReceived has to be called on the Xaml thread now. Otherwise the callback function won't be called and thus listening on a TCP socket won't work at all. Task-number: QTBUG-49121 Change-Id: I11ce2f72b0c1d3bb20e9579de5a2ce5150ca966a Reviewed-by: Andrew Knight <andrew.knight@intopalo.com> Reviewed-by: Samuel Nevala <samuel.nevala@intopalo.com> Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
Diffstat (limited to 'src/network')
-rw-r--r--src/network/socket/qnativesocketengine_winrt.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/network/socket/qnativesocketengine_winrt.cpp b/src/network/socket/qnativesocketengine_winrt.cpp
index cfb950592f..e9fa227733 100644
--- a/src/network/socket/qnativesocketengine_winrt.cpp
+++ b/src/network/socket/qnativesocketengine_winrt.cpp
@@ -47,11 +47,13 @@
#include <private/qthread_p.h>
#include <private/qabstractsocket_p.h>
+#include <private/qeventdispatcher_winrt_p.h>
#ifndef QT_NO_SSL
#include <QSslSocket>
#endif
+#include <functional>
#include <wrl.h>
#include <windows.foundation.collections.h>
#include <windows.storage.streams.h>
@@ -315,9 +317,11 @@ bool QNativeSocketEngine::bind(const QHostAddress &address, quint16 port)
Q_ASSERT_SUCCEEDED(hr);
}
- hr = d->tcpListener->add_ConnectionReceived(
- Callback<ClientConnectedHandler>(d, &QNativeSocketEnginePrivate::handleClientConnection).Get(),
- &d->connectionToken);
+ hr = QEventDispatcherWinRT::runOnXamlThread([d]() {
+ return d->tcpListener->add_ConnectionReceived(
+ Callback<ClientConnectedHandler>(d, &QNativeSocketEnginePrivate::handleClientConnection).Get(),
+ &d->connectionToken);
+ });
Q_ASSERT_SUCCEEDED(hr);
hr = d->tcpListener->BindEndpointAsync(hostAddress.Get(), portString.Get(), &op);
} else if (d->socketType == QAbstractSocket::UdpSocket) {