diff options
author | Liang Qi <liang.qi@theqtcompany.com> | 2015-11-04 20:18:14 +0100 |
---|---|---|
committer | Liang Qi <liang.qi@theqtcompany.com> | 2015-11-04 20:18:14 +0100 |
commit | 4159ee840549df11287294f0928e90f35f3e06ff (patch) | |
tree | 4a3947e37d54bdb78b4042e9ced20dbf181b5a2c /src/corelib/kernel | |
parent | 59dbf1786f22ec4ac88d8f9d38cac5cfb82acaea (diff) | |
parent | c8c39ecc37c156ac2677de09a26548dfc274b564 (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.cpp | 1 | ||||
-rw-r--r-- | src/corelib/kernel/qcoreapplication_win.cpp | 7 | ||||
-rw-r--r-- | src/corelib/kernel/qeventdispatcher_winrt.cpp | 26 | ||||
-rw-r--r-- | src/corelib/kernel/qeventdispatcher_winrt_p.h | 2 | ||||
-rw-r--r-- | src/corelib/kernel/qmetatype.cpp | 2 | ||||
-rw-r--r-- | src/corelib/kernel/qmimedata.cpp | 2 | ||||
-rw-r--r-- | src/corelib/kernel/qsharedmemory.cpp | 4 | ||||
-rw-r--r-- | src/corelib/kernel/qsharedmemory_android.cpp | 14 | ||||
-rw-r--r-- | src/corelib/kernel/qsystemsemaphore_android.cpp | 8 |
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; } |