summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel
diff options
context:
space:
mode:
authorLiang Qi <liang.qi@theqtcompany.com>2015-11-04 20:18:14 +0100
committerLiang Qi <liang.qi@theqtcompany.com>2015-11-04 20:18:14 +0100
commit4159ee840549df11287294f0928e90f35f3e06ff (patch)
tree4a3947e37d54bdb78b4042e9ced20dbf181b5a2c /src/corelib/kernel
parent59dbf1786f22ec4ac88d8f9d38cac5cfb82acaea (diff)
parentc8c39ecc37c156ac2677de09a26548dfc274b564 (diff)
Merge remote-tracking branch 'origin/5.6' into dev
Conflicts: config.tests/unix/ptrsize.test configure src/corelib/global/qnamespace.h src/network/socket/qabstractsocket.cpp tests/auto/other/networkselftest/networkselftest.pro Change-Id: Ic78abb4a34f9068567cea876861d4220f5a07672
Diffstat (limited to 'src/corelib/kernel')
-rw-r--r--src/corelib/kernel/qcfsocketnotifier.cpp1
-rw-r--r--src/corelib/kernel/qcoreapplication_win.cpp7
-rw-r--r--src/corelib/kernel/qeventdispatcher_winrt.cpp26
-rw-r--r--src/corelib/kernel/qeventdispatcher_winrt_p.h2
-rw-r--r--src/corelib/kernel/qmetatype.cpp2
-rw-r--r--src/corelib/kernel/qmimedata.cpp2
-rw-r--r--src/corelib/kernel/qsharedmemory.cpp4
-rw-r--r--src/corelib/kernel/qsharedmemory_android.cpp14
-rw-r--r--src/corelib/kernel/qsystemsemaphore_android.cpp8
9 files changed, 35 insertions, 31 deletions
diff --git a/src/corelib/kernel/qcfsocketnotifier.cpp b/src/corelib/kernel/qcfsocketnotifier.cpp
index 24e1e0ac9a..7f4c26d978 100644
--- a/src/corelib/kernel/qcfsocketnotifier.cpp
+++ b/src/corelib/kernel/qcfsocketnotifier.cpp
@@ -304,3 +304,4 @@ void QCFSocketNotifier::enableSocketNotifiers(CFRunLoopObserverRef ref, CFRunLoo
}
QT_END_NAMESPACE
+
diff --git a/src/corelib/kernel/qcoreapplication_win.cpp b/src/corelib/kernel/qcoreapplication_win.cpp
index 396d2f740a..324b664a1a 100644
--- a/src/corelib/kernel/qcoreapplication_win.cpp
+++ b/src/corelib/kernel/qcoreapplication_win.cpp
@@ -139,9 +139,10 @@ QString QCoreApplicationPrivate::appName() const
#if !defined(Q_OS_WINCE) && !defined(Q_OS_WINRT)
-// ### Qt6: FIXME: Remove this function. It is only there since for binary
-// compatibility for applications built with Qt 5.3 using qtmain.lib which calls it.
-// In Qt 5.4, qtmain.lib was changed to use CommandLineToArgvW() without calling into Qt5Core.
+// ### Qt6: FIXME: Consider removing this function. It is here for Active Qt
+// servers and for binary for compatibility to applications built with Qt 5.3
+// using qtmain.lib which calls it In Qt 5.4, qtmain.lib was changed to use
+// CommandLineToArgvW() without calling into Qt5Core.
Q_CORE_EXPORT
void qWinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR cmdParam,
int cmdShow, int &argc, QVector<char *> &argv)
diff --git a/src/corelib/kernel/qeventdispatcher_winrt.cpp b/src/corelib/kernel/qeventdispatcher_winrt.cpp
index 490a7c566a..58b87bd36b 100644
--- a/src/corelib/kernel/qeventdispatcher_winrt.cpp
+++ b/src/corelib/kernel/qeventdispatcher_winrt.cpp
@@ -97,8 +97,6 @@ public:
~QEventDispatcherWinRTPrivate();
private:
- ComPtr<IThreadPoolTimerStatics> timerFactory;
-
QHash<int, QObject *> timerIdToObject;
QVector<WinRTTimerInfo> timerInfos;
QHash<HANDLE, int> timerHandleToId;
@@ -167,7 +165,7 @@ QEventDispatcherWinRT::~QEventDispatcherWinRT()
{
}
-HRESULT QEventDispatcherWinRT::runOnXamlThread(const std::function<HRESULT ()> &delegate)
+HRESULT QEventDispatcherWinRT::runOnXamlThread(const std::function<HRESULT ()> &delegate, bool waitForRun)
{
static __declspec(thread) ICoreDispatcher *dispatcher = nullptr;
if (!dispatcher) {
@@ -194,7 +192,7 @@ HRESULT QEventDispatcherWinRT::runOnXamlThread(const std::function<HRESULT ()> &
ComPtr<IAsyncAction> op;
hr = dispatcher->RunAsync(CoreDispatcherPriority_Normal, Make<AgileDispatchedHandler>(delegate).Get(), &op);
- if (FAILED(hr))
+ if (FAILED(hr) || !waitForRun)
return hr;
return QWinRTFunctions::await(op);
}
@@ -292,9 +290,16 @@ void QEventDispatcherWinRT::registerTimer(int timerId, int interval, Qt::TimerTy
period.Duration = qMax(qint64(1), qint64(interval) * 10000);
const HANDLE handle = CreateEventEx(NULL, NULL, CREATE_EVENT_MANUAL_RESET, SYNCHRONIZE | EVENT_MODIFY_STATE);
const HANDLE cancelHandle = CreateEventEx(NULL, NULL, CREATE_EVENT_MANUAL_RESET, SYNCHRONIZE|EVENT_MODIFY_STATE);
- HRESULT hr = runOnXamlThread([&]() {
+ HRESULT hr = runOnXamlThread([cancelHandle, handle, period]() {
+ static ComPtr<IThreadPoolTimerStatics> timerFactory;
+ HRESULT hr;
+ if (!timerFactory) {
+ hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_System_Threading_ThreadPoolTimer).Get(),
+ &timerFactory);
+ Q_ASSERT_SUCCEEDED(hr);
+ }
IThreadPoolTimer *timer;
- HRESULT hr = d->timerFactory->CreatePeriodicTimerWithCompletion(
+ hr = timerFactory->CreatePeriodicTimerWithCompletion(
Callback<ITimerElapsedHandler>([handle, cancelHandle](IThreadPoolTimer *timer) {
DWORD cancelResult = WaitForSingleObjectEx(cancelHandle, 0, TRUE);
if (cancelResult == WAIT_OBJECT_0) {
@@ -314,14 +319,14 @@ void QEventDispatcherWinRT::registerTimer(int timerId, int interval, Qt::TimerTy
return S_OK;
}).Get(), &timer);
RETURN_HR_IF_FAILED("Failed to create periodic timer");
-
- d->addTimer(timerId, interval, timerType, object, handle, cancelHandle);
return hr;
- });
+ }, false);
if (FAILED(hr)) {
CloseHandle(handle);
CloseHandle(cancelHandle);
+ return;
}
+ d->addTimer(timerId, interval, timerType, object, handle, cancelHandle);
}
bool QEventDispatcherWinRT::unregisterTimer(int timerId)
@@ -495,9 +500,6 @@ QEventDispatcherWinRTPrivate::QEventDispatcherWinRTPrivate()
const bool isGuiThread = QCoreApplication::instance() &&
QThread::currentThread() == QCoreApplication::instance()->thread();
CoInitializeEx(NULL, isGuiThread ? COINIT_APARTMENTTHREADED : COINIT_MULTITHREADED);
- HRESULT hr;
- hr = GetActivationFactory(HString::MakeReference(RuntimeClass_Windows_System_Threading_ThreadPoolTimer).Get(), &timerFactory);
- Q_ASSERT_SUCCEEDED(hr);
HANDLE interruptHandle = CreateEventEx(NULL, NULL, NULL, SYNCHRONIZE|EVENT_MODIFY_STATE);
timerIdToHandle.insert(INTERRUPT_HANDLE, interruptHandle);
timerHandleToId.insert(interruptHandle, INTERRUPT_HANDLE);
diff --git a/src/corelib/kernel/qeventdispatcher_winrt_p.h b/src/corelib/kernel/qeventdispatcher_winrt_p.h
index 073aa1c121..1f9826f048 100644
--- a/src/corelib/kernel/qeventdispatcher_winrt_p.h
+++ b/src/corelib/kernel/qeventdispatcher_winrt_p.h
@@ -67,7 +67,7 @@ public:
explicit QEventDispatcherWinRT(QObject *parent = 0);
~QEventDispatcherWinRT();
- static HRESULT runOnXamlThread(const std::function<HRESULT()> &delegate);
+ static HRESULT runOnXamlThread(const std::function<HRESULT()> &delegate, bool waitForRun = true);
bool processEvents(QEventLoop::ProcessEventsFlags flags);
bool hasPendingEvents();
diff --git a/src/corelib/kernel/qmetatype.cpp b/src/corelib/kernel/qmetatype.cpp
index 01e2542dfa..e6d745bb74 100644
--- a/src/corelib/kernel/qmetatype.cpp
+++ b/src/corelib/kernel/qmetatype.cpp
@@ -2098,7 +2098,7 @@ const QMetaObject *QMetaType::metaObjectForType(int type)
\warning This function is useful only for registering an alias (typedef)
for every other use case Q_DECLARE_METATYPE and qMetaTypeId() should be used instead.
- \sa qRegisterMetaTypeStreamOperators(), QMetaType::isRegistered(),
+ \sa {QMetaType::}{qRegisterMetaTypeStreamOperators()}, {QMetaType::}{isRegistered()},
Q_DECLARE_METATYPE()
*/
diff --git a/src/corelib/kernel/qmimedata.cpp b/src/corelib/kernel/qmimedata.cpp
index 93788afeae..e7bf505ebc 100644
--- a/src/corelib/kernel/qmimedata.cpp
+++ b/src/corelib/kernel/qmimedata.cpp
@@ -563,7 +563,7 @@ QByteArray QMimeData::data(const QString &mimeType) const
operators must then be registered with the qRegisterMetaTypeStreamOperators()
function.
- \sa hasFormat(), QMetaType, qRegisterMetaTypeStreamOperators()
+ \sa hasFormat(), QMetaType, {QMetaType::}{qRegisterMetaTypeStreamOperators()}
*/
void QMimeData::setData(const QString &mimeType, const QByteArray &data)
{
diff --git a/src/corelib/kernel/qsharedmemory.cpp b/src/corelib/kernel/qsharedmemory.cpp
index cef0ef0f7d..267cf95814 100644
--- a/src/corelib/kernel/qsharedmemory.cpp
+++ b/src/corelib/kernel/qsharedmemory.cpp
@@ -127,8 +127,8 @@ QSharedMemoryPrivate::makePlatformSafeKey(const QString &key,
specified. Interoperation with non-Qt applications is achieved by first creating
a default shared memory with QSharedMemory() and then setting a native key with
setNativeKey(). When using native keys, shared memory is not protected against
- multiple accesses on it (e.g. unable to lock()) and a user-defined mechanism
- should be used to achieve a such protection.
+ multiple accesses on it (for example, unable to lock()) and a user-defined mechanism
+ should be used to achieve such protection.
*/
/*!
diff --git a/src/corelib/kernel/qsharedmemory_android.cpp b/src/corelib/kernel/qsharedmemory_android.cpp
index cdcd5685e0..12afff5dce 100644
--- a/src/corelib/kernel/qsharedmemory_android.cpp
+++ b/src/corelib/kernel/qsharedmemory_android.cpp
@@ -50,12 +50,12 @@ QSharedMemoryPrivate::QSharedMemoryPrivate()
void QSharedMemoryPrivate::setErrorString(QLatin1String function)
{
Q_UNUSED(function);
- qWarning() << Q_FUNC_INFO << "Not yet implemented on Android";
+ Q_UNIMPLEMENTED();
}
key_t QSharedMemoryPrivate::handle()
{
- qWarning() << Q_FUNC_INFO << "Not yet implemented on Android";
+ Q_UNIMPLEMENTED();
return 0;
}
@@ -65,7 +65,7 @@ key_t QSharedMemoryPrivate::handle()
int QSharedMemoryPrivate::createUnixKeyFile(const QString &fileName)
{
Q_UNUSED(fileName);
- qWarning() << Q_FUNC_INFO << "Not yet implemented on Android";
+ Q_UNIMPLEMENTED();
return 0;
}
#endif // QT_NO_SHAREDMEMORY && QT_NO_SYSTEMSEMAPHORE
@@ -74,27 +74,27 @@ int QSharedMemoryPrivate::createUnixKeyFile(const QString &fileName)
bool QSharedMemoryPrivate::cleanHandle()
{
- qWarning() << Q_FUNC_INFO << "Not yet implemented on Android";
+ Q_UNIMPLEMENTED();
return true;
}
bool QSharedMemoryPrivate::create(int size)
{
Q_UNUSED(size);
- qWarning() << Q_FUNC_INFO << "Not yet implemented on Android";
+ Q_UNIMPLEMENTED();
return false;
}
bool QSharedMemoryPrivate::attach(QSharedMemory::AccessMode mode)
{
Q_UNUSED(mode);
- qWarning() << Q_FUNC_INFO << "Not yet implemented on Android";
+ Q_UNIMPLEMENTED();
return false;
}
bool QSharedMemoryPrivate::detach()
{
- qWarning() << Q_FUNC_INFO << "Not yet implemented on Android";
+ Q_UNIMPLEMENTED();
return false;
}
diff --git a/src/corelib/kernel/qsystemsemaphore_android.cpp b/src/corelib/kernel/qsystemsemaphore_android.cpp
index f501779db9..536b09bb41 100644
--- a/src/corelib/kernel/qsystemsemaphore_android.cpp
+++ b/src/corelib/kernel/qsystemsemaphore_android.cpp
@@ -49,25 +49,25 @@ QSystemSemaphorePrivate::QSystemSemaphorePrivate() :
void QSystemSemaphorePrivate::setErrorString(const QString &function)
{
Q_UNUSED(function);
- qWarning() << Q_FUNC_INFO << "Not yet implemented on Android";
+ Q_UNIMPLEMENTED();
}
key_t QSystemSemaphorePrivate::handle(QSystemSemaphore::AccessMode mode)
{
Q_UNUSED(mode);
- qWarning() << Q_FUNC_INFO << "Not yet implemented on Android";
+ Q_UNIMPLEMENTED();
return -1;
}
void QSystemSemaphorePrivate::cleanHandle()
{
- qWarning() << Q_FUNC_INFO << "Not yet implemented on Android";
+ Q_UNIMPLEMENTED();
}
bool QSystemSemaphorePrivate::modifySemaphore(int count)
{
Q_UNUSED(count);
- qWarning() << Q_FUNC_INFO << "Not yet implemented on Android";
+ Q_UNIMPLEMENTED();
return false;
}