summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel
Commit message (Collapse)AuthorAgeFilesLines
* Correct documentation for Void metatype value, define UnknownTypeJeremy Katz2012-07-171-1/+2
| | | | | | | | QMetaType::Type::Void was misdocumented as being equal to 0. The actual value for Void is currently 43. UnknownType is 0. Change-Id: I4e9cb3b4d21e10e1691b985a6ad635bc7a04f1b7 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* Add new metatypes to QMetaType::Type enum for docsJeremy Katz2012-07-171-0/+3
| | | | | | | | This adds QRegularExpression, QJson{Value,Object,Array,Document}, and SChar Change-Id: I3dbe9d197952e980f0de9eaed2605d190b8d0405 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* Remove Qt3Support enums for q{dir,filedevice,settings,variant} in docsJeremy Katz2012-07-171-3/+0
| | | | | | Change-Id: I07942447bb756561e5c502c9a0c03b6aaf8133d1 Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* Remove documentation of previously deleted Accessibility eventsJeremy Katz2012-07-171-3/+0
| | | | | | Change-Id: I7996f2f9b6d11cea130e2a56d0997e1f208e5642 Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@nokia.com>
* Remove documentation of Qt3Support enums in qcoreevent.cppJeremy Katz2012-07-171-7/+0
| | | | | | Change-Id: Id8740adaa26ee44f40010373947a5be82942b0ba Reviewed-by: Laszlo Papp <lpapp@kde.org> Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>
* Fix applicationName() being empty in QApplication.David Faure2012-07-161-1/+1
| | | | | | | | | | | | | | | A virtual method was reimplemented to return an always-empty string, probably a leftover from a refactoring. This fix showed that tst_qwidget_window was buggy: between Qt4 and Qt5, a "Before" became "After", which made "Before" unused, and was masking the fact that the app name was empty by default. In addition, the earlier Qt5 change that made the app name default to argv[0] now requires updating this test, now that it's actually working. Change-Id: I5360026821a9b95bedd0ff09dba3d51a22e542b7 Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Paul Olav Tvete <paul.tvete@nokia.com>
* Create a way to inform moc about private signals.Stephen Kelly2012-07-131-1/+2
| | | | | | | | | | | | | | | | | | Moc checks for the use of the QPrivateSignal struct, which is part of the Q_OBJECT macro and is private to each class that uses it. Moc then generates a name of the signal which does not include the private struct, and generates code to invoke such signals with an instance of the private struct. This way we can mark private signals as such and prevent them from being emitted from subclasses or from outside of the class entirely. The drawback to this is that it only works if the private signal has no default arguments. However, at least in Qt, there are no such signals. Change-Id: Id16eadaa8d3c36a2c3b265077877f3e1d8304c84 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Enable modularization of translation files.Jan-Arve Saether2012-07-122-18/+61
| | | | | | | | | | | | | | | | | This is accomplished by introducing dependencies to catalogs. This requires one API change: QTranslator::load(const uchar *, int); changes to QTranslator::load(const uchar*, int len, const QString &directory = QString()); Since now, even the load from memory might need a directory if the memory block contains a qm file with dependencies. Change-Id: I781f333d07f53bb431d0a7b5fa1abe282dc4d338 Task-number: QTBUG-26138 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* remove QT_NO_SIGNALMAPPER from featuresTasuku Suzuki2012-07-122-6/+0
| | | | | | | QSignalMapper is a small and extremely low-level interface. Change-Id: I7e799673c6fe559178739fbc58385141ae3f0789 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* android: fix build mistake from earlier mkspec namingRobin Burchell2012-07-121-1/+1
| | | | | Change-Id: I48d9f097e3177f9e2f558845e531f4e438035586 Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
* Q_DECLARE_SHARED: mark the type movableMarc Mutz2012-07-101-1/+0
| | | | | | | | | | All implicitly shared classes are by definition movable, so this patch adds Q_DECLARE_TYPEINFO(Type, Q_MOVABLE_TYPE) to Q_DECLARE_SHARED. Change-Id: Idf8989ae1a7ed6d1ac13fccb7eaef7395a875350 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Remove Library dependency on SettingsTasuku Suzuki2012-07-091-2/+2
| | | | | | | | made QLibraryInfo available with QT_NO_SETTINGS. QKdeTheme is removed when QT_NO_SETTINGS is defined. Change-Id: I63d619bb305e6c23985d9ea50c72d39a697b7a4b Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Fix event loop throughput issueRafael Roquetto2012-07-051-8/+25
| | | | | | | | | | Currently, only one bps event can be handled per event loop iteration, bringing about a huge performance penalty. This patch fixes this issue by bulk processing events whenever they are available. Change-Id: Iecce1e86730bd90c3c81a7c6ebdf9ed83189e58e Reviewed-by: Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Fix socket notifier registration on Blackberry.Rafael Roquetto2012-07-042-8/+52
| | | | | | | | | | This fixes a bug on QEventDispatcherBlackberry, where registerSocketNotifier() and unregisterSocketNotifier() wrongly assumed that a file descriptor was being watched exclusively by one QSocketNotifier, while in fact there can be more than one QSocketNotifier associated with a single file descriptor. Change-Id: I0ce54bf809df109ad97f4a7f170f448d5d04d453 Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
* Revert "Allow moc to handle symbols that have been redefined."Matthew Vogt2012-07-041-6/+6
| | | | | | | | | | | | This reverts commit 5bb1408927b4eb5a03e8ab9f7cbc68f80d8a3962. The temporary measure used to support redefinition of QtDeclarative class names during the transition period is no longer required. Task-number: QTBUG-24517 Change-Id: Ib90f08fcdfb02e004e594ac72b698eaa0325d98d Reviewed-by: Kent Hansen <kent.hansen@nokia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Simplify the creation of QMetaTypeId specializations.Stephen Kelly2012-07-031-10/+6
| | | | | Change-Id: I07405f91b6f73a4e129859ca45a983d3ec7029ab Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* Add constexpr template specializations for built in metatypes.Stephen Kelly2012-07-031-5/+5
| | | | | | | | | This will make it possible (in Qt 6) to remove the enums listing metatype ids. As it is constexpr, it can be used in switch statements just like enums, as enum values, and as template specialization values. Change-Id: I51293674c403714e34cb8a8b8953522fc97a740a Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Implement QVariant conversions for QObject derived pointer metatypes.Stephen Kelly2012-07-011-1/+64
| | | | | | | canConvert() and convert() use the metaobject to convert such types. Change-Id: Ic05e74c5c2423b4b9682b88adc856a16dcba4cff Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* Store the QMetaObject with the QMetaType.Stephen Kelly2012-07-013-7/+98
| | | | | | | | This will allow conversion between pointers to compatible QObject derived types. Change-Id: I19e08934571fb3f1b91e594892214041fe5f6a11 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* Call QObject::disconnectNotify() when receiver is destroyedKent Hansen2012-06-282-0/+5
| | | | | | | | | | | | | | | | | | | | | | | Store the signal index in QObjectPrivate::Connection, thereby making it available in "implicit" disconnect contexts (i.e., receiver deletion). This change does not cause the size of QObjectPrivate::Connection to grow (still 40 bytes on 32-bit Linux, 72 bytes on 64-bit Mac). Valgrinding the new benchmark indicates that the percentage of the time spent in the QObject destructor increased from 7.8% to 8.4% on ia32, for that particular stress test; the increase is the combined cost of calling metaObject(), QMetaObjectPrivate::signal(), and disconnectNotify() for one connection. In practice, the measured wallclock time increased by about 3ms for a 500ms run (which repeatedly constructs, connects, and destroys an object). Task-number: QTBUG-4844 Change-Id: I1beb01c753f31542fc0acb62edb4c6d165fcc5b4 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* QMetaType: Fix warnings about truncation from uint64 to int.Friedemann Kleint2012-06-281-2/+2
| | | | | | | Triggers warnings with MSVC2010/64bit. Change-Id: I90abdf4de416e0db554eb46e4b3cc7a0a38cb1db Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* doc: use correct snippet id for QObject::isSignalConnectedKent Hansen2012-06-281-1/+1
| | | | | | | Copy-and-paste error; the doc was based on QObject::receivers. Change-Id: I4f6ce716d388328e0345e8457cbc99fff323ce41 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Add QAbstractDeclarativeData::isSignalConnected hookKent Hansen2012-06-262-6/+10
| | | | | | | | | | | | | | Similar to QAbstractDeclarative::receivers. This hook will allow QObject::isSignalConnected(QMetaMethod) to return true when there are QML-managed connections. It's important that the hook is called from QObjectPrivate::isSignalConnected(uint), since QML calls that function. Change-Id: I9c5e42f2b3e7f985af02905985a3a47101cdee05 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
* Fix docs mentioning Q_EXPORT_PLUGIN2Lars Knoll2012-06-251-1/+1
| | | | | | | | Fix all remaining places where Q_EXPORT_PLUGIN2 was being used in the documentation. Change-Id: I7be67b83c18545d0e74f250b4b26583444b01909 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fixes high CPU usage on timer expiration when using glib event loop.Daniel Thor Kristjansson2012-06-211-1/+1
| | | | | | | | | | | GTimerSource has 1ms accuracy, QTimerInfoList::timerWait() has 1us accuracy. So when there is less than 1 ms left on the timer we enter a tight loop checking for timer expiration since we don't round up the timerWait() timer to the nearest millisecond. Task-number: QTBUG-7618 Change-Id: I684c9236324f598bc69c6810be270aa47c791f91 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Doc: tmake -> qmake, it's about timeDaniel Molkentin2012-06-211-8/+8
| | | | | | | | | Pushing this before 5.0 since it will most certainly trigger a major recompile, which is probably why this has never been changed. Change-Id: I5fd90537d3b754d0a8a1b522d66183513693e0af Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Record if a metatype is a smart pointer to a QObject derived.Stephen Kelly2012-06-201-4/+44
| | | | | | | | | | | | This allows QVariant/QMetaType software (such as QtDeclarative) to deal with smart pointers in a similar way to how they can deal with naked pointers (accessing properties etc). This also adds a requirement that T be fully defined when QSharedPointer<T> is inserted into a QVariant. Change-Id: I29e12b8a6aa5f4aadbd62f92b89bc238f64b5725 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* Add some internal API for extracting a QSharedPointer<T> from QVariant.Stephen Kelly2012-06-201-0/+8
| | | | | | | | | | | | | The T must be derived from QObject, or it will fail to compile. This will allow scripting or other 'wrapping' and runtime environments like QtDeclarative to handle QSharedPointers to types derived from QObject properly. A QSharedPointer<T> can be inserted into a QVariant, and where T derives from QObject, a QSharedPointer<QObject> can be extracted from the QVariant, and its properties are then accessible. Change-Id: I68d6d89aceceb019267bd7301baa2047f9c09b90 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make QVariant compile with QT_NO_QUUID_STRINGJeremy Katz2012-06-201-0/+4
| | | | | | | | Task-number: QTBUG-24816 Change-Id: I76e6a6bcf1a2381e14f400648e3cb8ba554772a6 Reviewed-by: Tasuku Suzuki <tasuku.suzuki@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* QMetaMethod::invoke: Use normalizedType() to normalize return typeKent Hansen2012-06-201-14/+2
| | | | | | | | | | | | | | The code was probably written before QMetaObject::normalizedType() was introduced. The behavior is covered by the existing tests tst_QMetaObject::invokeMetaMember and tst_QMetaObject::invokeBlockingQueuedMetaMember. Change-Id: Ib1c3b3e4dff37947defd1dfdcc860df44539aa3a Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* QEvent: Don't give DeferredDelete special treatmentBradley T. Hughes2012-06-191-12/+8
| | | | | | | | | | After commit 9b07fd0d5cae6846f0eaccf3dc51bc9e78559a05, Qt no longer keeps the loop-level in QEvent's d-pointer. This means we no longer need to special case this event type in the QEvent copy constructor, assignment operator, and destructor. Change-Id: Iff71713d38303674f4517fdfa169cc448ed41dd4 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add automatic metatype declaration for QPointer and QWeakPointer.Stephen Kelly2012-06-151-26/+34
| | | | | Change-Id: Ic9a04fa68d0bb14ef07455a6559e59f4b887f38b Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* Fix automatic declaration of QSharedPointer<T> metatypes.Stephen Kelly2012-06-121-1/+30
| | | | | | | | | | | | | | | | | | | | | | | QSharedPointer doesn't work like the other automatic template metatype declarations because in some cases T* is declared as a metatype, but we are interested in QSharedPointer<T> (eg QObject*). In other cases, T is declared as a metatype and we are interested in QSharedPointer<T> (eg char). In particular the macro used before this patch was attempting to get the metatype id of the element_type using for example qMetaTypeId<QObject>() instead of qMetaTypeId<QObject*>(), which did not work. Similarly, the variadic macro driven test is no good, because it was testing QSharedPointer<QObject*> instead of QSharedPointer<QObject>, so that is removed. In the end, the only thing we can sensibly automatically declare as metatypes are QSharedPointers to QObject derived types. That is also the type that makes the most sense in a QML context anyway. Change-Id: I13dd40147e2e6bedf38661f898102abaaaa96208 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* Change internal QDeclarativeData hooks to use signal index rangeKent Hansen2012-06-122-9/+5
| | | | | | | | | | | This also changes the qtdeclarative-specific QMetaObject::activate() overload to not take a methodOffset argument, since it's no longer needed. Change-Id: I4f7ece9f43339f3327419598c032e48fb37b97f0 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Michael Brasser <michael.brasser@nokia.com> Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
* Avoid a type name normalization during auto-registration.Jędrzej Nowacki2012-06-121-6/+38
| | | | | | | Containers are auto-registered and use normalized names. Change-Id: Id65c3940401f69436929220e1f6a971135e147ed Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Deprecate the use of QWeakPointer to track QObjects.Stephen Kelly2012-06-071-2/+2
| | | | | | | | | | | | | | The main problem with using QWeakPointer to track QObjects is that it has API to convert to QSharedPointer, which is undefined behavior. There is no need to overload the meaning of QWeakPointer with QObject tracking. QPointer is more suitable and should be used instead. Because QPointer is implemented in terms of QWeakPointer, we need to add some overloads which are not deprecated. Change-Id: If0333e4800c9fd277629cc69185c9ca3e4e7e81d Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add QDeferredDeleteEventBradley T. Hughes2012-06-054-12/+38
| | | | | | | | | | | Use this to store the loop-level counter needed by QCoreApplication when determining when it is safe to delete an object. This removes the hack to hijack the QEvent::d pointer (even though the pointer is unused). Change-Id: I91c0b1aa00235ec6e13feb30bf928e56d2f80026 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Change testlib signal dumper hooks to use signal index rangeKent Hansen2012-06-042-8/+6
| | | | | | | | | | | | Another step towards getting rid of the class method offset computation in QMetaObject::activate(). Since QMetaObjectPrivate::signal() is private API, this also required adding a testlib dependency on core-private (and getting rid of the duplicated QSignalSpyCallbackSet struct). Change-Id: I0d830f35392a6b44fc321c5285877ec0bf437100 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Change QConnectionSenderSwitcher et al to use signal index rangeKent Hansen2012-06-032-6/+17
| | | | | | | | | | | | | First step towards getting rid of the signal_absolute_index variable from QMetaObject::activate() (which requires computation of the class's method offset). This also required changing the implementation of the public function senderSignalIndex() so it still returns an index in the full method range. Change-Id: I58571eb3c8099ea5b673682872c53875f5ea8c13 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Use QMetaObjectPrivate::signalOffset() where appropriateKent Hansen2012-06-031-19/+6
| | | | | | | | computeOffsets() was unnecessarily computing the method index, when only the signal index is needed. Change-Id: Id682d4447ba283a44cf0ea15cc47bd30edccb57b Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Simplify the QObject::dumpObjectInfo() implementationKent Hansen2012-06-011-14/+1
| | | | | | | Use the new signal index-based API. Change-Id: If44e02e71b718bca5c18c486ca9ab95f836cd0f1 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Simplify connectSlotsByName() implementationKent Hansen2012-06-011-8/+3
| | | | | | | Use the new signal index-based API. Change-Id: I89263f5366726ef8213e45e5ab6575ebd6eab04a Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Add private API for working with meta-methods in signal index rangeKent Hansen2012-06-013-17/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Internally, QObject and QMetaObject already leave out non-signal methods when working with signals. This is possible because the signals always come before other types of meta-method in the meta-object data. Ignoring irrelevant methods is faster and can save memory. QMetaObject provides internal indexed-based connect() and disconnect() functions. However, these functions currently take an absolute method index as the signal specifier, instead of an absolute _signal_ index. Hence, QMetaObject and friends must convert from the method index range to the signal index range. By providing an API that only considers signal indices, clients of the index-based QMetaObject::connect()/disconnect() can provide the proper signal index directly. Similarly, for the qtdeclarative integration (QDeclarativeData hooks) the signal index can be passed directly. This will eliminate most of the conversions back and forth between signal index and method index, and some other redundant work done by qtdeclarative's custom connection implementation. There are some places where the behavior can't be changed; for example, QObject::senderSignalIndex() will still need to return an index in the method range, since that function is public API. Changing QMetaObject::connect()/disconnect() to take an index in the signal range will be done in a separate commit; this commit is only an enabler for porting existing usage of those functions to the new behavior. Change-Id: Icb475b6bbdccc74b4e7ee5bf72b944b47159cebd Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Socket FD are now of type qintptr.Jonas M. Gastal2012-06-012-2/+2
| | | | | | | | | | This should've been done together with the bulk of other changes in: bdce61002255b5f8b3213e93175cefdfebfde2cc and bf7f17060773803f332e8c729a70f47b94243890 Task-number: QTBUG-19004 Change-Id: I6d95a29140c1de5e6800812add9d7882511b909a Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
* Add clear() to QPointer for QWeakPointer compatibility.Stephen Kelly2012-06-012-0/+13
| | | | | Change-Id: I9efc162bf56775c7ebcff4e3b79a997edc4ceaeb Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Fix some gcc warningsKonstantin Ritt2012-06-011-4/+4
| | | | | | | | | | | | These are: "enumeral and non-enumeral type in conditional expression", "comparison of unsigned expression >= 0 is always true", and "address requested for 't', which is declared 'register'" Change-Id: Ia9bab2e1e2c212a2889197e8dd5f7295dda9dadd Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Move implementation of QObject::senderSignalIndex() to QObjectPrivateKent Hansen2012-06-012-11/+20
| | | | | | | | In preparation of changing the implementation to return an index in the signals-only range, not all-methods range. Change-Id: Ib743a4bc9da27ad776ade262b215ebf988e7ab28 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Include qobject_p.h from qmetaobject_p.hKent Hansen2012-05-311-0/+3
| | | | | | | | Needed for QObjectPrivate::Connection. Since it's a nested class, it's not possible to merely forward declare it. Change-Id: Ie2ad1b3972df5433cdb49ee443f053ba2d613779 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Don't call metaObject() redundantlyKent Hansen2012-05-311-1/+1
| | | | | | | The desired meta-object is already stored in a local variable. Change-Id: I40c7840f07f5dbd67110e2f7d5bb618cbb269047 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QtCore: remove \link usagesGiuseppe D'Angelo2012-05-293-8/+5
| | | | | Change-Id: I0de764b51a972de0b6eb2bf3c04d2b190f581f52 Reviewed-by: Casper van Donderen <casper.vandonderen@nokia.com>