summaryrefslogtreecommitdiffstats
path: root/src/corelib/thread
Commit message (Collapse)AuthorAgeFilesLines
...
* | Doc: Fix qdoc warnings about missing \inmoduleKai Koehne2015-08-041-0/+1
| | | | | | | | | | Change-Id: Id04ac0d4825ad3e8489c0db186425e049e2c6108 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | Add a way for auxiliary threads to handle events without CoreAppThiago Macieira2015-07-182-2/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Long-lived threads started by Qt itself can now receive events even if QCoreApplication hasn't been created. This is required in all threads we start that will handle events, unless we're sure that the thread will exit before the global application object begins destruction. Otherwise, those threads will have race conditions dealing with the event delivery system trying to call the QCoreApplication::notify() virtual while the object is being destroyed. Change-Id: I27eaacb532114dd188c4ffff13d4ad2a4bb443e6 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | QThread: simplify the pthread_cleanup_pop functionThiago Macieira2015-07-161-7/+8
| | | | | | | | | | | | | | | | | | Make sure that the QString is not in scope anymore when the pthread cleanup happens. C++ destructors in scope are pthread cleanup handlers. Change-Id: I9a75ad8521ae4e5cbbe5ffff13d1ae1c7e31f6bb Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | Haiku: Fix QWaitCondition on HaikuTobias Koenig2015-07-081-1/+1
| | | | | | | | | | | | | | | | | | | | | | The latest version of Haiku provides the implementation for pthread_condattr_setclock, so we can enable the code in QWaitCondition again to make it use the monotonic clock correctly. Change-Id: Ibb9ad33d873c3b34f2c516087c4e0aeac04cc83f Reviewed-by: Augustin Cavalier <waddlesplash@gmail.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/5.5' into devLiang Qi2015-07-014-472/+51
|\| | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/qglobal.cpp src/corelib/global/qglobal.h src/corelib/global/qsysinfo.h src/corelib/global/qsystemdetection.h src/corelib/kernel/qobjectdefs.h src/plugins/plugins.pro tests/auto/widgets/itemviews/qlistview/qlistview.pro Change-Id: Ib55aa79d707c4c1453fb9d697f6cf92211ed665c
| * Use qthread_win.cpp for WinRT as wellOliver Wolff2015-06-234-472/+51
| | | | | | | | | | | | | | | | | | | | Since of Windows (Phone) 8.1 most of the desktop's thread functionality is also available, so we might be able to share the code and get rid of the extra implementation for WinRT. Task-number: QTBUG-43837 Change-Id: I0ce907cd94899834527f88c70e1e395bafdb14b3 Reviewed-by: Maurice Kalinowski <maurice.kalinowski@theqtcompany.com>
* | QtCore: Use Q_NULLPTR instead of 0 in all public headersMarc Mutz2015-07-017-13/+13
| | | | | | | | | | | | | | | | | | This is in preparation of adding -Wzero-as-null-pointer-constant (or similar) to the headers check. Task-number: QTBUG-45291 Change-Id: I0cc388ef9faf45cbcf425ad0dc77db3060c104a8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QException: fix exception specificationMarc Mutz2015-06-172-5/+13
| | | | | | | | | | | | | | | | | | | | Some broken compilers (known broken: GCC 4.7; known good: GCC 4.9) don't understand that destructors are implicitly noexcept and complain about a weaker exception specification on ~QException than on ~std::exception. Change-Id: I433475fcf345d7da55e8da667cf9821ee09c0d8a Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | Use "Ex"-versions of WaitForSingle/MultipleObject(s) where possibleOliver Wolff2015-06-162-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Not only should using the "Ex"-versions be the rule and not the exception on Windows, but it's only the only way to share as much code as possible between Desktop Windows and WinRT (which is pushed by Microsoft a lot). The current rule of Desktop and WinCE vs WinRT does not make a lot of sense any longer, as WinCE is getting less and less important. By moving these #ifdefs in favor of WinRT, WinCe code might be removed easier in the future. Change-Id: I0ef94fb14fbf8add9c2dfa2a3fb8036d25fb697d Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge "Merge remote-tracking branch 'origin/5.5' into dev" into refs/staging/devSimon Hausmann2015-06-041-4/+10
|\ \
| * | Merge remote-tracking branch 'origin/5.5' into devSimon Hausmann2015-06-031-4/+10
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/qnamespace.qdoc src/corelib/io/qwindowspipereader.cpp src/corelib/io/qwindowspipereader_p.h src/corelib/statemachine/qstatemachine.cpp src/corelib/statemachine/qstatemachine_p.h src/plugins/platforms/xcb/qxcbconnection.h tests/auto/network/access/qnetworkreply/tst_qnetworkreply.cpp tests/auto/tools/qmake/tst_qmake.cpp tests/manual/touch/main.cpp Change-Id: I917d694890e79ee3da7d65134b5b085e23e0dd62
| | * WinRT: fix namespaced buildJoerg Bornemann2015-05-161-4/+10
| | | | | | | | | | | | | | | Change-Id: I0505523a5524995e374dc8f005f101d0cea8b01e Reviewed-by: Oliver Wolff <oliver.wolff@theqtcompany.com>
* | | Fix build on QNX 650Simon Hausmann2015-06-031-0/+6
|/ / | | | | | | | | | | | | | | | | Commit 2fa7b3b317fa941064ec4ba62163e3244becf55a broke the build, the compiler (gcc 4.4) doesn't like the mismatch between constructor declaration and definition. Change-Id: Ied1f3293c21871276ce8d2db3d2e6c06c75ade90 Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | QRunnable: add Q_DISABLE_COPYMarc Mutz2015-06-021-1/+3
| | | | | | | | | | | | | | | | ...but only for Qt 6. It's a source-incompatible change, e.g. in a user hierarchy of clone()able runnables. Change-Id: I8610308dea46da19bda5c96985d35f31c43484be Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Q(Unhandled)Exception: declare dtor out-of-lineMarc Mutz2015-06-022-0/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | De-duplicates vtables and enables RTTI on this hierarchy. This is esp. important for exception classes, as RTTI is used to select the catch clause to handle the exception in-flight. The issue is made a bit complicated by the fact that the exception specification changed from C++98 to 11 and that C++98 clients require the empty throw() specification while we don't want to introduce warnings for C++11 users. Let's hope no compiler includes throw specs into the mangled names. Task-number: QTBUG-45582 Change-Id: If086c8c38fccdc2c9c7e2aa7a492192cc1f86a6c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QRunnable: declare dtor out-of-line and export classMarc Mutz2015-06-022-3/+13
| | | | | | | | | | | | | | | | | | | | De-duplicates vtables and enables RTTI on this hierarchy. Change-Id: Ia60f4aa446f93ab91ea8780a3acc1118210ba7d5 Reported-by: Volker Krause <volker.krause@kdab.com> Task-number: QTBUG-45582 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@theqtcompany.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/5.5' into devLiang Qi2015-04-224-69/+3
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/statemachine/qstatemachine.cpp src/corelib/statemachine/qstatemachine_p.h src/gui/painting/qdrawhelper.cpp src/plugins/platforms/xcb/qxcbnativeinterface.cpp src/plugins/platforms/xcb/qxcbwindow.cpp src/plugins/platforms/xcb/qxcbwindow.h src/testlib/qtestblacklist.cpp src/tools/qdoc/node.cpp src/tools/qdoc/node.h tests/auto/gui/painting/qcolor/tst_qcolor.cpp Change-Id: I6c78b7b162001712d5774293f501b06b4ff32684
| * qdoc: Remove #ifdef Q_QDOC for uses of QPrivateSignalMartin Smith2015-04-201-10/+2
| | | | | | | | | | | | | | | | | | | | | | | | Signals marked with QPrivateSignal had the QPrivateSignal marker ifdefed out for qdoc. This is no longer necessary, so the #ifdefs are removed. Change-Id: Idb334ed311c6ed6883d7b7b5a3fcdede60c4a1f8 Task-number: QTBUG-45535 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
| * Merge remote-tracking branch 'origin/5.4' into 5.5Liang Qi2015-04-151-1/+1
| |\ | | | | | | | | | Change-Id: I004854a25ebbf12b1fda88900162fe7878716c58
| | * Doc: Fix using Apple-related terminology in Qt CoreAlexander Volkov2015-03-311-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use the name "OS X" instead of "Mac OS X", "Mac OS" and "OSX", and mention iOS. Replace "Carbon Preferences API" by "CFPreferences API" in the QSettings documentation. Change-Id: Ia7f9fb874276c7c445a1649df521b96ff43daa0c Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com> Reviewed-by: Venugopal Shivashankar <venugopal.shivashankar@digia.com> Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
| * | Fix performance of recursive read-write locksSimon Hausmann2015-04-142-58/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The implementation used an expensive QHash to keep track of reading threads, for seemingly no good reason. Change-Id: Iffa5b18d80f56b8ff22d39aa6bc3d52c2e3ed0ef Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com> Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Remove <qhash.h> where it's not usedMarc Mutz2015-04-201-1/+0
|/ / | | | | | | | | | | | | | | To avoid source-incompatibilites, wrap in QT_DEPRECATED_SINCE(5, 5) in public headers. Change-Id: I6117e8a6b11200d2f1a0a94a0e87d5c27538218e Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | Add missing \since tag for the documentation for loopLevel()Andy Shaw2015-03-121-0/+1
| | | | | | | | | | Change-Id: Ib5e23c40d9258db7986ddb892def207808ac89c7 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
* | (Re)introduce loopLevel into QThreadAndy Shaw2015-03-092-0/+14
| | | | | | | | | | | | | | | | | | | | | | This function used to reside in QEventLoop in Qt 3 and was deprecated in Qt 4. However this is useful for those who want to know how many event loops are running within the thread so we just make it possible to get at the already available variable. Change-Id: Ia6a7d94ff443a1d1577633363694bc2fa8eca7e4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Jørgen Lind <jorgen.lind@theqtcompany.com>
* | Add missing fetchAndXxx methods to atomic classes based on std::atomicThiago Macieira2015-03-051-0/+8
| | | | | | | | | | | | | | | | And add tests for the GCC intrinsics and for std::atomic. Task-number: QTBUG-43794 Change-Id: Ic5d393bfd36e48a193fcffff13b9b2dbaee80469 Reviewed-by: Olivier Goffart (Woboq GmbH) <ogoffart@woboq.com>
* | Merge remote-tracking branch 'origin/5.4' into 5.5Frederik Gladhorn2015-02-242-9/+15
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: examples/xml/htmlinfo/simpleexample.html examples/xml/rsslisting/rsslisting.cpp qmake/generators/win32/msbuild_objectmodel.cpp src/3rdparty/harfbuzz-ng/src/hb-private.hh src/corelib/global/qlogging.cpp src/corelib/io/qstorageinfo_unix.cpp src/corelib/thread/qwaitcondition_unix.cpp src/gui/kernel/qguiapplication.cpp src/plugins/platforms/linuxfb/qlinuxfbintegration.cpp src/testlib/doc/src/qt-webpages.qdoc tests/auto/other/qaccessibility/tst_qaccessibility.cpp Change-Id: Ib272ff0bc30a1a5d51275eb3cd2f201dc82c11ff
| * Android: fix timed QWaitCondition::wait() on Android >= 5.0.Yoann Lopes2015-02-171-5/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | wait() was always returning immediately, regardless of the timeout value, due to a timespec comparison from different clock types. On Android 5.0, qt_gettime() uses the monotonic clock but the wait condition was using the real time clock. __pthread_cond_timedwait_relative() is not exported anymore in Android 5.0, we therefore fall back to pthread_cond_timedwait(). Since the monotonic clock is now available, qt_gettime returns a time based on it. The wait condition consequently needs to use the monotonic clock. Change-Id: Ie7cf909b81107edd7207c3c039b3ec1f5422303f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>
| * Make the detection of the number of cores on Unix prettierThiago Macieira2015-02-151-4/+2
| | | | | | | | | | | | | | This is a no-op change. It doesn't improve or worsen the code at all. Change-Id: Ifd5273842370ca9bce0ed74f2f2d54d453797948 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Update copyright headersJani Heikkinen2015-02-1150-347/+347
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Qt copyrights are now in The Qt Company, so we could update the source code headers accordingly. In the same go we should also fix the links to point to qt.io. Outdated header.LGPL removed (use header.LGPL21 instead) Old header.LGPL3 renamed to header.LGPL3-COMM to match actual licensing combination. New header.LGPL-COMM taken in the use file which were using old header.LGPL3 (src/plugins/platforms/android/extract.cpp) Added new header.LGPL3 containing Commercial + LGPLv3 + GPLv2 license combination Change-Id: I6f49b819a8a20cc4f88b794a8f6726d975e8ffbe Reviewed-by: Matti Paaso <matti.paaso@theqtcompany.com>
* | Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2015-01-213-93/+93
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/global/global.pri src/corelib/global/qcompilerdetection.h src/corelib/global/qglobal.h src/corelib/tools/qdatetime.cpp src/plugins/platforms/xcb/qxcbscreen.h src/plugins/platforms/xcb/qxcbwindow.h src/widgets/dialogs/qcolordialog.cpp src/widgets/dialogs/qcolordialog_p.h tools/configure/configureapp.cpp Change-Id: Ie9d6e9df13e570da0a90a67745a0d05f46c532af
| * Doc: Fix typosSze Howe Koh2015-01-191-2/+2
| | | | | | | | | | Change-Id: I29d5576902a5d1ea25558e980081952d9157f7f0 Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
| * Doc: fix the type listed for the functions in QAtomicIntegerThiago Macieira2015-01-022-91/+91
| | | | | | | | | | | | | | The "int" was a left over when this was documentation for QAtomicInt. Change-Id: If7b7688982d27cbbd42f080eff7d08344b587f44 Reviewed-by: Richard J. Moore <rich@kde.org>
* | Remove Q_C_CALLBACKSThiago Macieira2015-01-171-6/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This is useless. The C++ language does require callbacks passed to C functions to also be extern "C". That's what this macro was doing. But #ifdef'ing for the macro only made the code uglier. Just let the extern "C" be there for all compilers. PS: C++ classes can't be extern "C"... Change-Id: Ic5d393bfd36e48a193fcffff13b9c9b3923443dd Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Marc Mutz <marc.mutz@kdab.com>
* | Haiku: Make corelib compile on HaikuTobias Koenig2015-01-101-1/+1
| | | | | | | | | | Change-Id: I66bc492390eedd723ab7866d3c7a38539d708727 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* | QMutex/QReadWriteLock: mark bootstrap implementations nothrowMarc Mutz2015-01-092-28/+28
| | | | | | | | | | | | | | | | This is primarily to get a cleaner build of src/tools under -Wnoexcept. Change-Id: I0dea21e70aad56b25675fc59fac0327b55ee83e3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'origin/5.4' into devFrederik Gladhorn2014-12-291-1/+2
|\| | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/tools/qbytearray.cpp src/gui/kernel/qplatformsystemtrayicon.cpp src/gui/kernel/qplatformsystemtrayicon.h src/plugins/platforms/xcb/xcb-plugin.pro Change-Id: I00355d3908b678af8a61c38f9e814a63df808c79
| * Fix QThread::idealThreadCount on Unix if sysconf or sysctl failsThiago Macieira2014-12-201-1/+2
| | | | | | | | | | | | | | | | | | | | The BSD4 code (including OS X) calls sysctl and if that fails, it sets cores to -1. Similarly, the generic Unix code calls sysconf() and assigns the returned value to cores, but sysconf can return -1 on failure. Change-Id: I9e521d366e9c42f36c2ba20a37e7a74539ddb8f4 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
* | QThreadPool::cancel() to remove individual jobs from the job queue.Nick Shaforostoff2014-12-244-12/+40
| | | | | | | | | | | | | | | | | | [ChangeLog][QtCore][QThreadPool] Added QThreadPool::cancel() which allows removing from the job queue a job that hasn't been started yet. Change-Id: Ib8f1c1f32a34f5eec8338c641d820b928e470164 Reviewed-by: Nick Shaforostoff <shafff@ukr.net> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Use the new warning enabling/disabling macros in qtbaseThiago Macieira2014-12-031-8/+3
| | | | | | | | | | | | Change-Id: I91ff06644e8047c2ca483f9768b46c1372eb6171 Reviewed-by: Martin Smith <martin.smith@digia.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@theqtcompany.com>
* | Add Q_DECL_OVERRIDE in the src subdirectoryOlivier Goffart2014-12-036-14/+14
|/ | | | | | | | | | Done automatically with clang-modernize on linux (But does not add Q_DECL_OVERRIDE to the function that are marked as inline because it a compilation error with MSVC2010) Change-Id: I2196ee26e3e6fe20816834ecea5ea389eeab3171 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Define Q_CC_CLANG to be the version of upstream Clang that's in useTor Arne Vestbø2014-11-051-7/+3
| | | | | | | | | | | | We map the Apple Clang versions to upstream, so that we have one define to compare against. Fixes build break on iOS due to qbasicatomic.h not defining QT_BASIC_ATOMIC_HAS_CONSTRUCTORS on Apple Clang versions, which is needed after 1e9db9f5e18123f2e686c10b Change-Id: I17493c0187c20abc5d22e71944d62bfd16afbad2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Merge "Merge remote-tracking branch 'origin/5.3' into 5.4" into refs/staging/5.4Gabriel de Dietrich2014-10-011-1/+1
|\
| * Merge remote-tracking branch 'origin/5.3' into 5.4Gabriel de Dietrich2014-09-291-1/+1
| |\ | | | | | | | | | | | | | | | | | | | | | Conflicts: src/network/socket/qnativesocketengine_unix.cpp src/widgets/kernel/qwidget_qpa.cpp Change-Id: I6f1aa320d5ca66cd92d601a95885aeaab0abb191
| | * Document that default-constructed QFuture are canceledThiago Macieira2014-09-221-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-40680 Change-Id: Idee9ff75c89c8349be779b90ee9c34a899d92c0c Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Martin Smith <martin.smith@digia.com>
* | | Doc: Use title case in section1 titlesNico Vertriest2014-09-301-1/+1
|/ / | | | | | | | | | | | | | | Using Python script title-cased.py Task-number: QTBUG-41250 Change-Id: I00d3d7a0b30db7304a7904efd6d63abd9a7b493b Reviewed-by: Topi Reiniö <topi.reinio@digia.com>
* | Update license headers and add new license filesMatti Paaso2014-09-2449-926/+534
| | | | | | | | | | | | | | | | | | - Renamed LICENSE.LGPL to LICENSE.LGPLv21 - Added LICENSE.LGPLv3 - Removed LICENSE.GPL Change-Id: Iec3406e3eb3f133be549092015cefe33d259a3f2 Reviewed-by: Iikka Eklund <iikka.eklund@digia.com>
* | Merge remote-tracking branch 'origin/5.3' into 5.4Frederik Gladhorn2014-09-231-2/+0
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The isAlwaysAskOption was removed in 38621713150b663355ebeb799a5a50d8e39a3c38 so manually removed code in src/plugins/bearer/connman/qconnmanengine.cpp Conflicts: src/corelib/global/qglobal.h src/corelib/tools/qcollator_macx.cpp src/corelib/tools/qstring.cpp src/gui/kernel/qwindow.cpp src/gui/kernel/qwindow_p.h src/gui/text/qtextengine.cpp src/platformsupport/fontdatabases/fontconfig/qfontenginemultifontconfig_p.h src/plugins/platforms/android/qandroidinputcontext.cpp src/plugins/platforms/xcb/qglxintegration.cpp src/plugins/platforms/xcb/qglxintegration.h src/plugins/platforms/xcb/qxcbconnection_xi2.cpp src/testlib/qtestcase.cpp src/testlib/qtestlog.cpp src/widgets/dialogs/qfiledialog.cpp src/widgets/kernel/qwindowcontainer.cpp tests/auto/corelib/tools/qcollator/tst_qcollator.cpp tests/auto/gui/text/qtextscriptengine/tst_qtextscriptengine.cpp tests/auto/widgets/kernel/qwidget_window/tst_qwidget_window.cpp tests/auto/widgets/widgets/qlineedit/tst_qlineedit.cpp Change-Id: Ic5d4187f682257a17509f6cd28d2836c6cfe2fc8
| * Remove reference to removed qatomic_sparc.hAdam Majer2014-09-181-2/+0
| | | | | | | | | | | | | | | | | | | | qatomic_sparc.h was removed previously as part of general cleanup of old atomic code for Qt 5.3. Unfortunately SPARC include reference was not removed resulting in build failure on that platform. Task-number: QTBUG-41384 Change-Id: Ic6e31b32324b0e5dd3700a6a21515a8eea5668bd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QFutureInterface: allow to work with a QThreadPool != globalInstance()Marc Mutz2014-08-053-5/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Background: It is often necessary/advisable to schedule tasks on thread pools != globalInstance(). As Herb Sutter writes in http://www.drdobbs.com/parallel/use-thread-pools-correctly-keep-tasks-sh/216500409 and the Qt Training Material stresses, tasks you schedule on a (global) thread pool should be non-blocking, which currently rules out using any of the QtConcurrent functions for, say, file I/O. Nonetheless it's often convenient to have thread pools also for file I/O, as the thumbnail viewer exercise in the Qt Training Material shows. In this case, you'd use a dedicated thead pool, leaving the global thread pool for CPU-bound tasks. Yet, none of the QtConcurrent functions allow to pick the QThreadPool instance on which to schedule the work created with them. This patch prepares for them to do so. This is the first part of the forward-port of https://qt.gitorious.org/qt/qt/merge_requests/1281. Implement by using a new QThreadPool* member that defaults to nullptr, and adding setThreadPool to set this member, then using it in lieu of QThreadPool::globalInstance() everywhere. I chose to leave m_pool == nullptr to mean globalInstance() to avoid creating the global instance whenever a QFuture is created, even if the future represents the result of a calculation not run on the global thread pool. [ChangeLog][QtCore][QFuture] Can now be used with any QThreadPool, not just globalInstance(). Task-number: QTBUG-17220 Change-Id: I4e1dc18d55cf60141b2fa3d14e2d44a3e9e74858 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Use the 3-argument testAndSet in the fetchAndXxx operationsThiago Macieira2014-07-251-6/+6
| | | | | | | | | | | | | | | | | | Saves us from an extra load in the loop when the result is already there. Change-Id: Ib65b5b13f27975b8fc88be9b888c19505bf5e07c Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>