diff options
author | Oliver Wolff <oliver.wolff@theqtcompany.com> | 2015-11-10 08:28:12 +0100 |
---|---|---|
committer | Andrew Knight <andrew.knight@intopalo.com> | 2015-11-18 06:05:44 +0000 |
commit | 08f9a1bd6ab9b1777ee5ba163d75e5c848c39eb4 (patch) | |
tree | e8eaa04f0fdc034d9d3938e61a093cee12f6cf6e /src/network | |
parent | aecf3006bddb959795d03dd72d9c520e49713913 (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.cpp | 10 |
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) { |