summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel
Commit message (Collapse)AuthorAgeFilesLines
* QMetaMethod::invoke: compare the QMetaType id of the return typesOlivier Goffart2013-08-291-2/+7
| | | | | | | | | | | | | | | | | | | | | | Since Qt5, the QMetaObject do not contains the string name of the builtin types, but only the QMetaType id. QMetaMethod::typeName convert back from the id to the string. But if the type is aliased, the string of the main type is returned. This was the case for example for qint64 which is transformed to "qlonglong". This causes a regression in QMetaType::invoke when trying to invoke a method which return an aliased type, since the string comparison would fail. Fix the problem by also comparing the metatype id. Changelog: QMetaMethod::invoke: Fix return of aliased meta type Task-number: QTBUG-33222 Change-Id: Iec7b99dcbf7b23eb818de74f413e4451ce510ac4 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* Use correct mask constant in the Windows event dispatcher.Friedemann Kleint2013-08-201-1/+14
| | | | | | | | | | | | Mask out QS_TOUCH, QS_POINTER when running a VS2012-compiled binary on pre-Windows 8 systems. Task-number: QTBUG-32257 Task-number: QTBUG-28513 Task-number: QTBUG-29097 Task-number: QTBUG-29435 Change-Id: I33ce3a659a234cb04d3b5ae9d668d193d681be7f Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Revert "Disable precision timers when running MSVC2012 code on pre-Windows 8."Friedemann Kleint2013-08-201-8/+0
| | | | | | | | | | This reverts commit aa1b4c0943187d82e0c313b93559e99226a9c75a. It turns out that the bug is caused by a different mask constant in Windows 8 which should not take effect in pre-Windows 8. Change-Id: I1ad502262dae42856c07d48ee3bc9dc032ab379b Reviewed-by: Joerg Bornemann <joerg.bornemann@digia.com>
* Rename template parameter: "I" -> "II"Sze Howe Koh2013-08-181-9/+9
| | | | | | | | | | C99 defines the "I" macro in complex.h. qobjectdefs_impl.h can be indirectly included in user code, which raises the possibility of a name clash if the user's compiler supports C99 and the user includes complex.h Change-Id: Ie79ec7baf2d49a34b66a01556c7e57324303dc04 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Android: Fix QCoreApplication::applicationDirPath()Eskil Abrahamsen Blomfeldt2013-08-081-1/+1
| | | | | | | | | | | | | Disable the code path which queries /proc/<pid>/exe for the current executable path, as from a Q_OS_ANDROID perspective, this executable will be the Dalvik binary. Instead we get the application directory via the fallback, by looking in argv[0], since this is set to the location of the application binary. Task-number: QTBUG-32852 Change-Id: Ib93050f41cbd47aaf71284e8bfa6a3247131d978 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* qobject: Do not destroy slot objects inside a lockDario Freddi2013-08-071-8/+26
| | | | | | | | | This prevents deadlocks in case the destructor re-enters. (Example: a functor containing a QSharedPointer of a QObject) This also fixes a leaked slot object in disconnectHelper. Change-Id: Ia939790e3b54e64067b99540974306b4808a77f2 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Symbol for max number of arguments in QMetaMethod::invoke()Illya Kovalevskyy2013-07-302-0/+10
| | | | | | | | | | | QMetaMethod::invoke(..) takes fixed number of arguments for execution. Adding preprocessor macros which literaly equals this number would be useful for writing some generic code. Task-number: QTBUG-31821 Change-Id: Ia2faf291f3f7df44a47c3cf18f5cd587d37d7d2e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QCoreApplication: Removed out-of-date docs (argv() method).Tomasz Olszak2013-07-121-5/+1
| | | | | | | | QCoreApplication::argv() method was obsolete in Qt4.8 and removed in Qt5.0. Change-Id: I217402f774f5509c8ca317a35c831ffa5ac2af06 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Accept defeat when select(2)ing without a monotonic clockThiago Macieira2013-07-101-6/+2
| | | | | | | | | | | | | | | | We prefer to use the monotonic clock because it's never affected by time jumps (such as the user changing the date, or the system adjusting for any other reasons, including automatic leap seconds). But if a system doesn't have a monotonic clock, we simply accept the regular, real time clock and hope it doesn't jump. This is better than the current code that never restarts a call. The side-effect is that a 30-second select may become a 3630-second select if someone sets the clock back one hour. Task-number: QTBUG-22301 Change-Id: Ia5a3bb453cd475f45b03637e2549165589fd2524 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* Fix dead lock in the Qt event handlingOlivier Goffart2013-07-101-2/+4
| | | | | | | | | | | | | | | The deadlock is caused because the QEvent is destroyed while holding the event list mutex. And the QEvent may have a custom destructor that will re-enter the event handlng code. The QScopedPointer that should destroy the event must be created after the MutexUnlocker. Regression introduced by commit f9035587b98ac5dc9491e642b8ec84470ec03f0e Task-number: QTBUG-31606 Change-Id: I6b2cbc2656eacdec61b641886953f00bf5b3ff36 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Doc: Uniformize the syntax description of Q_PROPERTYOlivier Goffart2013-07-101-1/+1
| | | | | | | | | | | | In the qobject.html page, the description of the syntax of Q_PROPERTY does not include the MEMBER keyword added in Qt 5.1. But it was well documented in the documentation of the property system. Merge the two code snipppets. Task-number: QTBUG-32211 Change-Id: I7b57329c201b6f3bc812155f21dbfb2c6423494e Reviewed-by: Martin Smith <martin.smith@digia.com>
* Clean up evaluation license logicTor Arne Vestbø2013-07-053-47/+42
| | | | | | | | | | | | | | | | | | Instead of storing the application type as a uint, we use the enum provided by QCoreApplicationPrivate. The former resulted in a few cases of wrong logic where the values got mixed up, such as always printing the QtCore console warning, even for GUI applications. The qt_eval_is_supported function has been refactored to return enums instead of magic values, to make the logic easier to read. The same goes for qt_eval_days_left, which now only concerns itself with the number of days left. qt_eval_is_expired() has been added to use for easy checking of expiration date. Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Change-Id: Ia0e85b2103f790a7e02e0d6e567a477b3145fcb9 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* QtCore: Fix remaining MSVC-64 warnings about integer truncation.Friedemann Kleint2013-07-021-5/+5
| | | | | | | | | warning C4267: 'argument' : conversion from 'size_t' to ' int', possible loss of data. Change-Id: I8d1ca27d4d66a9ce0deb70766446e780308bba33 Reviewed-by: Mitch Curtis <mitch.curtis@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
* BlackBerry: Increased loop level around bps_get_eventBernd Weimer2013-06-291-4/+10
| | | | | | | | | | | | This is needed, because bps_get_event can also invoke callbacks. Deferred deletions in such a callback are not executed for instance, because the loop level might already be at its minimum. Change-Id: I8a1b3a3f92de139575654de011352f8abc6c3c1a Reviewed-by: Kevin Krammer <kevin.krammer@kdab.com> Reviewed-by: Fabian Bumberger <fbumberger@rim.com> Reviewed-by: Jeff Kehres <jkehres@rim.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* Merge remote-tracking branch 'origin/release' into stableFrederik Gladhorn2013-06-281-1/+1
|\ | | | | | | Change-Id: I53112e20a65b7d706755b4a22622979f3b91a2c2
| * Fix compilation with ICC 13.1: the MSVC 2005 & 2008 code is badThiago Macieira2013-06-261-1/+1
| | | | | | | | | | | | | | | | | | qvariant_p.h(226): error: name followed by "::" must be a class or namespace name template<class C> static Yes test(char (*)[(&C::isNull == 0) + 1]); ^ Change-Id: I42eef44d46ca0fb7aac8f82150e917c4fb912b15 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | Further followup to Q_OS_MACX changes.Jake Petroules2013-06-241-1/+1
| | | | | | | | | | | | | | | | Flip !Q_OS_IOS conditions to Q_OS_MACX where it seems appropriate, remove a redundant condition in qtextcodec_p.h. Change-Id: I21c8c0c490f1eb4a9337a7f2f3e907c125489438 Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@digia.com>
* | Doc: QTranslator::translate() isn't an overload anymoreDavid Faure2013-06-191-2/+0
| | | | | | | | | | | | Change-Id: Ib50044da48be3fb4f43300aa285e15403bd8d65e Reviewed-by: Jerome Pasion <jerome.pasion@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>
* | Remove use of 'register' from Qt.Stephen Kelly2013-06-176-24/+24
| | | | | | | | | | | | | | | | | | | | It is deprecated and clang is starting to warn about it. Patch mostly generated by clang itself, with some careful grep and sed for the platform-specific parts. Change-Id: I8058e6db0f1b41b33a9e8f17a712739159982450 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Add basic conversion functions from QVariant(QJsonValue).Jędrzej Nowacki2013-06-141-0/+48
| | | | | | | | | | | | | | | | There is a mismatch how QML and C++ converts QJsonValue. This patch unifies conversions by adding QJsonValue support in QVariant::convert(). Change-Id: I8a1db3d77c517945ef48064b4b66ba03aa4f2fd0 Reviewed-by: Frederik Gladhorn <frederik.gladhorn@digia.com>
* | Mark the Q_DECLARE_OPAQUE_POINTER macro as introduced in 5.0Laszlo Papp2013-06-121-0/+1
| | | | | | | | | | Change-Id: Ida52c9f1f72b628d9a7faaf7998798e781b53df2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QtCore: Fix MSVC-64 warnings about integer truncation.Friedemann Kleint2013-06-081-2/+2
|/ | | | | | | | warning C4267: 'argument' : conversion from 'size_t' to ' int', possible loss of data. Change-Id: I79af7497420d468b5bc7c48c9ae21b86117519a9 Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
* Disable precision timers when running MSVC2012 code on pre-Windows 8.Friedemann Kleint2013-05-301-0/+8
| | | | | | | | | | Precision timers can cause the event loop to lock up when running MSVC2012 code on pre-Windows 8. Task-number: QTBUG-27266 Change-Id: Idd73731e82843d0d140859bab825bc1a54eccf1a Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
* Fix QEventDispatcherBlackberry build when debug is onRafael Roquetto2013-05-201-0/+1
| | | | | | | Change-Id: Ia00d0f32e7d552421cc230ffca25085ab0a3a31e Reviewed-by: Andreas Holzammer <andreas.holzammer@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com> Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
* Implement apostrophe in windows cmd argsJørgen Lind2013-05-101-5/+2
| | | | | | | Task-number: QTBUG-15379 Change-Id: I4a2ca942d2dbfa490302858b589e00bd91e25636 Reviewed-by: Andy Shaw <andy.shaw@digia.com>
* Fix a case of connect()ing to signals declared in a base classOlivier Goffart2013-05-091-3/+7
| | | | | | | | | | | | | | Fix connection to pointer to member signal that belongs to the base class, but whose type is a pointer to a member of the derived class. The current code only use the QMetaObject of the type coming from the function type to look up the signal id. But if the signal was casted to a pointer to member function of a derived type, then we also need to look in the base classes Change-Id: Ib98fc38f63942946acb34d9f83c100991d58e4e5 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Micro-optimization of list string list construction in qmetaobject.Jędrzej Nowacki2013-04-131-2/+4
| | | | | | | | We know the size of constructed list, so it may be worth to reserve memory space for it. Change-Id: Idad061bc1dbf5acecaec48d2e00ca3504b9db8b8 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Merge branch 'release' into stableSergio Ahumada2013-04-101-0/+1
|\ | | | | | | | | | | | | Conflicts: src/widgets/styles/qwindowsvistastyle.cpp Change-Id: Ifd17532393ebab8ed454c6a79bab622959ceef95
| * Clear the WA_QuitOnClose flag from EvalMessageBox.Michael Brüning2013-04-081-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | The evaluation message box caused the QtWebProcess to quit due to the fact that the process has no other windows and EvalMessageBox was both set to be closed on quit and ended up being the last window in the process. Change-Id: Iad6461d014258fdc5fade7dafe48da33903377bb Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Andy Shaw <andy.shaw@digia.com> Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
* | Fix MSVC warning about truncation from 64bit to 32bit int.Friedemann Kleint2013-04-061-1/+1
| | | | | | | | | | Change-Id: Id3e2f148aa430045d32d61b61eabc3f7197cbbf0 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* | Doc: Replaced canConvert() with canConvert(Int)Venu2013-04-031-1/+1
| | | | | | | | | | | | | | | | | | | | | | This change amends my earlier change to make the function reference relevant to the example being discussed. Task-number: QTBUG-28204 Change-Id: I841a561ba117f83a96b8b4a3661cea2a7a3e47da Reviewed-by: Sze Howe Koh <szehowe.koh@gmail.com> Reviewed-by: Martin Smith <martin.smith@digia.com>
* | ApplicationState: Add new event class: ApplicationStateChangeEventRichard Moe Gustavsen2013-04-032-5/+9
| | | | | | | | | | | | | | | | | | | | | | This patch will follow up on e27ca37 (add more state to QT::ApplicationState), and add a new event class QApplicationStateChangeEvent with type Qt::ApplicationStateChange. Change-Id: Idee724f181f1fbb2321ddad7e0df00c88b3488b1 Reviewed-by: Eskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@digia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com> Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
* | Make sure QThreadData and QAdoptedThread object is destroyed at app exitjian liang2013-04-031-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Task-number: QTBUG-30134 Restore the lines in qcoreapplication.cpp removed by commit 950b35cf97ad398f97883efd2a18ee97994a8a9c to ensure QThreadData and QAdoptedThread object of main thread is destroyed at application exit. We don't set QCoreApplicationPriavte::theMainThread to 0 as before since it will be set to zero in QThreadData::~QThreadData() Change-Id: I8ee56aff5a933ce1d812b07fb00a29ed0839ab6e Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Update the QMetaMethod::tag() documentation due to moc expanding macrosThiago Macieira2013-04-011-3/+11
| | | | | | | | | | | | | | | | | | | | | | Since 34a3b63dc7d3b09342647537d378f5a55d0c81f0 (Qt 5.0), moc expands macros to their defined values. This broke the example of tagging a method: in Qt 4, it never expanded anything, so the tag was always visible and extracted. Now it's necessary to avoid defining it to empty when moc is run. Change-Id: I89967f7f993cf8e14119b086f4dd5573b348646d Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | Document Q_REVISION macro betterAlan Alpert2013-04-012-4/+36
| | | | | | | | | | | | | | | | Previously it was only mentioned in properties.qdoc Task-number: QTBUG-18802 Change-Id: Iab23128c1567974154cdcce7412b2e1468bb846a Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Doc: Replaced canConvert() with canConvert(int)Venu2013-03-291-1/+1
| | | | | | | | | | | | | | | | | | | | This change makes the function reference more relevant to the example being discussed. Task-number: QTBUG-28204 Change-Id: I50bea45f1e11d7e1eef4bc6726ebb329151fbc3d Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
* | QEventLoop: fix race on 'exit' and 'returnCode' private membersDavid Faure2013-03-292-10/+14
| | | | | | | | | | Change-Id: I380046f386448783e3e4e93bde8cbe15b9b0279e Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QMetaTypeId: use QByteArray, not QVarLengthArray, to construct type namesMarc Mutz2013-03-291-27/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | So far, type-name strings for class template instantiations were constructed in QMetaTypeId::qt_metatype_id() by concatenating various bits and pieces into a QVarLengthArray<char>, presumably to avoid the dynamic memory allocation for small strings. Yet, when passing the result to qRegisterNormalisedMetaType, which takes a QByteArray, the QVarLengthArray was copied from, not by QByteArray::fromRawData(), but by QByteArray(const char*,int), which unconditionally results in a dynamic memory allocation after all. What's worse: the characters are copied twice: First into the QVarLengthArray, and then into the QByteArray. Remove the first of these copies by using QByteArray+reserve() to copy directly into the final QByteArray. Change-Id: Id915798a318fe97279a7cc0aca176544f99c7e86 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Mark Q_UNUSED the private members that aren't usedThiago Macieira2013-03-231-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Apple Clang 4.2 has a new warning, letting you know when a private member isn't used by any member function (and, I guess, if the class has no friends): private field 'd' is not used [-Werror,-Wunused-private-field] Qt has a few of those for future expansion. It's not an error for us. Change-Id: Id2edb1159589572f97a07f93181c9c96c5dd983c Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com> Reviewed-by: David Faure <david.faure@kdab.com>
* | QThread: fix race when setting the eventDispatcherDavid Faure2013-03-226-35/+36
| | | | | | | | | | | | | | Use QAtomicPointer to make this thread-safe. Change-Id: If71f204699fcefabdb59bd26342d777d1cc9e2a7 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | Remove racy setting of eventDispatcher to 0.David Faure2013-03-221-2/+0
| | | | | | | | | | | | | | | | | | This is inconsistent (e.g. the glib event dispatcher doesn't do this) and unnecessary (already done by QThreadPrivate::finish before deleting the event dispatcher, and by the QCoreApplication destructor). Change-Id: Ib98147953a5e71ec87aab0ec7ef5063bb7d80134 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* | QThreadDataPrivate: fix data race on canWait boolean.David Faure2013-03-222-3/+4
| | | | | | | | | | | | | | | | postEvent() accesses it with the postEventList mutex locked, but processEvent() was checking it without any mutex locked. Change-Id: I31bbb50f7a1c337067b8e3de16ee7cd11400b517 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | QEventDispatcherUNIX: turn interrupt bool into an atomic int.David Faure2013-03-222-7/+5
| | | | | | | | | | | | | | It's read and written by different threads, so this was a race. Change-Id: Ieffaa169eb67f40dc935291b3994f9ff1c7e05f0 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | Merge remote-tracking branch 'gerrit/release' into stableSamuel Rødal2013-03-211-115/+165
|\| | | | | | | | | | | | | | | | | | | | | | | Conflicts: configure mkspecs/features/qt_module_headers.prf mkspecs/features/qt_tool.prf src/angle/angle.pro src/tools/bootstrap/bootstrap.pro tests/auto/widgets/kernel/qwidget/tst_qwidget.cpp Change-Id: Ide5759fe419a50f1c944211a48f7c66f662684e0
| * Make QVariant docs refer to QMetaType::Type.Mitch Curtis2013-03-191-115/+165
| | | | | | | | | | | | | | Task-number: QTBUG-30014 Change-Id: Ie4c0df92345bcb79ef44fb6f345cba9fc934d32f Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
* | Merge branch 'dev' into stableOswald Buddenhagen2013-03-2057-438/+931
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This starts Qt 5.1 release cycle Conflicts: src/gui/text/qfontdatabase.cpp src/gui/text/qharfbuzz_copy_p.h src/widgets/kernel/qapplication.cpp src/widgets/kernel/qcoreapplication.cpp Change-Id: I72fbf83ab3c2206aeea1b089428b0fc2a89bd62b
| * | Document restrictions on the new connection syntaxOlivier Goffart2013-03-191-0/+7
| | | | | | | | | | | | | | | | | | | | | | | | ... when the compiler do not support variadic template Change-Id: Iec84cad8ece2fc28b0c224872fdd90d30ae60fc9 Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | Support connection to functor with multiple operator()Olivier Goffart2013-03-192-6/+64
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When variadic templates and decltype are supported, detect the best overload of operator() to call. Currently, the code takes the type of the operator(), which requires that the functor only has one, and that it has no template parameter. This feature is required if we want to connect to c++1y generic lambda (N3418) Change-Id: Ifa957da6955ea39ab804b58f320da9f98ff47d63 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@digia.com>
| * | Mark QtPrivate::ApplyReturnType constructor as explicit.Olivier Goffart2013-03-191-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | Else, the operator,(T, ApplyReturnType<void>) is sometimes chosen if a pointer is passed, and that is breaking some decltype expressions. (such as the one in ComputeFunctorArgumentCount in the next patch) Change-Id: Ic203bbb1a8f5abbebb3b11786454807aa20be5fd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
| * | Make sure that we #include qconfig.h before testing for features.Thiago Macieira2013-03-194-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is mandatory in public headers (qiodevice.h, qopengl*, etc.), but it's a good idea even in private headers, in case someone includes that header first somewhere. In particular, all platformsupport API is private. Change-Id: If287baa5d9ed14e93c1666efa0e6332c4c1cd9a4 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com>