summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel
Commit message (Collapse)AuthorAgeFilesLines
* Registered QUuid in the metatype system as a builtin type.Denis Dzyubenko2012-01-054-3/+38
| | | | | | | Change-Id: I6be6129d9f6bf468ba8a5805cfa0f6f79199afb3 Reviewed-by: João Abecasis <joao.abecasis@nokia.com> Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com> Reviewed-by: Prasanth Ullattil <prasanth.ullattil@nokia.com>
* Don't release timer ids in event dispatcher codeBradley T. Hughes2012-01-048-38/+57
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 3rdparty event dispatchers are impossible to write without using the internal API QAbstractEventDispatcherPrivate::releaseTimerId(). Fix this by having each QObject keep track of its own timer ids, and release them when they are no longer used. As a side effect, this makes the QObjectData::pendTimer bit unnecessary. This also removes the QObjectData::inThreadChangeEvent hack that the event dispatchers used to avoid releasing timer ids when moving timers to a new thread. QBasicTimer becomes even more low-level. It cannot use QObject::startTimer() anymore, since we do not have a way to call QObject::killTimer() from QBasicTimer::stop(). QBasicTimer uses the QAbstractEventDispatcher interface directly, and releases the timer id explicitly as well when stopping the timer. This change also fixes some rare timer id "leaks" when destroying or stopping timers after a thread has exited and destroyed its event dispatcher (the timer ids would never be released when no dispatcher exists). Globally destructed QObjects that have running timers may try to release their timer ids after the timer id freelist has been destroyed. This commit accomodates such objects by avoiding the null dereference in QAbstractEventDispatcherPrivate::releaseTimerId(). Change-Id: I2d7cd8221fae441f3cf02b6c0b4bc16063834d00 Reviewed-by: David Faure <faure@kde.org> Reviewed-by: Denis Dzyubenko <denis.dzyubenko@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Refactor QVariant handlers.Jędrzej Nowacki2012-01-044-115/+253
| | | | | | | | | | | | | | | | | | | | | | | | | QVariant implementation is based on delegation to a handler. The handler has rather simple construction, it is a set of function that implements a switch statement over known types and redirects calls to a right method of an encapsulated types instance. Unfortunately after qt modularization project, it is not easy to use types directly from different modules, as they can be undefined or completely unaccessible. Which means that each module has to implement own handler to cooperate correctly with QVariant. We can suspect that list of modules known to QVariant will grow and it is not limited to GUI, Widgets and Core, therefore it would be nice to have an unified, from performance and source code point of view, way of working with handlers. This patch is an attempt to cleanup handlers. Keynotes: - Each handler is working only on types defined in the same module - Core handler implements handling of primitive types too - Custom types have an own handler - Each handler is independent which means that dispatch between handlers is done on QVariant level - Handlers might be registered / unregistered using same interface Change-Id: Ib096df65e2c4ce464bc7a684aade5af7d1264c24 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Fixed static assert in qvariant template magicDenis Dzyubenko2012-01-041-1/+1
| | | | | | | | | CallConstructor<T, /* CanUseInternalSpace = */ false> is called when we need to construct an object that couldn't be fit in qvariantdata, meaning either it is not a POD type (Q_PRIMITIVE_TYPE), or it is simply too large to fit there. Change-Id: Ied122b4a6f600e14312a8d515f5b3e91214a94f1 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* Make QTimer::singleShot use Qt::PreciseTimer for lower timeouts.Bradley T. Hughes2012-01-021-1/+4
| | | | | | | | | | CoarseTimers are worst in their first firing, so we prefer a PreciseTimer for something that happens only once. If the timeout is too big, we use a CoarseTimer anyway (current threshold is 2000ms). Author: Thiago Macieira <thiago.macieira@nokia.com> Change-Id: I30b20acf506e442cd58126abfe3a4d70fc13b075 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Change QTimerInfo (UNIX) to keep the interval in milliseconds.Bradley T. Hughes2012-01-022-5/+17
| | | | | | | | | | The API passes the interval as an int, there's no reason to convert it to a timeval struct. This also prepares for changing the UNIX timer code to support the different timer types. Author: Thiago Macieira <thiago.macieira@nokia.com> Change-Id: Ie3cc1ae8f1be6a9ad3f1766051642cbf3e614418 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add Qt::TimerType argument to QAbstractEventDispatcher::registerTimer()Bradley T. Hughes2012-01-0211-36/+71
| | | | | | | | | | | | | | | | | | | | | | | | | | ... and deprecate the old registerTimer() functions. The new pure- virtual registerTimer() breaks source-compatibility. Subclasses cannot be instantiated anymore, since the pure virtual function signature has changed. QAbstractEventDispatcher::TimerInfo is no longer a QPair. It is now a struct with timerId, interval, and timerType members. This is a source incompatibility that should only affect subclasses of QAbstractEventDispatcher, which will need to pass 3 arguments to the TimerInfo constructor instead of 2. If the subclass used QPair<int,int> instead of the TimerInfo typedef, the QPair<int,int> declarations will need to be replaced with TimerInfo. Call the new registerTimer() function with the type from QObject::startTimer(). Change all subclasses of QAbstractEventDispatcher to reimplement the new virtual function. The type argument is unused at the momemnt, except to ensure that registeredTimers() returns the type each timer was registered with. Implementations for the various dispatchers will be done in separate commits. Author: Thiago Macieira <thiago.macieira@nokia.com> Change-Id: Ia22697e0ab0847810c5d162ef473e0e5a17a904b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Add Qt::TimerType and the QTimer::timerType propertyBradley T. Hughes2012-01-026-15/+70
| | | | | | | | | | | | | | | | | | | | The timer type will control the accuracy of the timer. By default, all timers are CoarseTimers, which allows for +/- 5% interval adjustment. PreciseTimers will not have any interval adjustments, VeryCoarseTimers will have intervals adjusted to full second resolution. Use QTimer::setTimerType() or the QTimer::singleShot() overload to specify the type. QObject::startTimer() now takes a Qt::TimerType argument which defaults to Qt::CoarseTimer. QBasicTimer::startTimer() gets an overload that takes a Qt::TimerType argument. The argument is unused for now, since the QAbstractEventDispatcher interface needs to change (done in a separate commit). Author: Thiago Macieira <thiago.macieira@nokia.com> Change-Id: I3100da5aa1fe17ec30b8644897d0fe6ec4a07f52 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Change event posting to use a QVector.Robin Burchell2011-12-301-3/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This provides a ~10% improvement to the newly introduced QCoreApplication event_posting_benchmark (a simple synthetic benchmark of creating a bunch of events, posting them, and sending the queue). before: ********* Start testing of QCoreApplicationBenchmark ********* Config: Using QTest library 5.0.0, Qt 5.0.0 PASS : QCoreApplicationBenchmark::initTestCase() RESULT : QCoreApplicationBenchmark::signal_slot_benchmark():"1000": 0.82 msecs per iteration (total: 53, iterations: 64) RESULT : QCoreApplicationBenchmark::signal_slot_benchmark():"10000": 8.6 msecs per iteration (total: 69, iterations: 8) RESULT : QCoreApplicationBenchmark::signal_slot_benchmark():"100000": 84 msecs per iteration (total: 84, iterations: 1) RESULT : QCoreApplicationBenchmark::signal_slot_benchmark():"1000000": 874 msecs per iteration (total: 874, iterations: 1) PASS : QCoreApplicationBenchmark::signal_slot_benchmark() PASS : QCoreApplicationBenchmark::cleanupTestCase() Totals: 3 passed, 0 failed, 0 skipped ********* Finished testing of QCoreApplicationBenchmark ********* after: ********* Start testing of QCoreApplicationBenchmark ********* Config: Using QTest library 5.0.0, Qt 5.0.0 PASS : QCoreApplicationBenchmark::initTestCase() RESULT : QCoreApplicationBenchmark::event_posting_benchmark():"1000 events": 0.781 msecs per iteration (total: 100, iterations: 128) RESULT : QCoreApplicationBenchmark::event_posting_benchmark():"10000 events": 7.8 msecs per iteration (total: 63, iterations: 8) RESULT : QCoreApplicationBenchmark::event_posting_benchmark():"100000 events": 75 msecs per iteration (total: 75, iterations: 1) RESULT : QCoreApplicationBenchmark::event_posting_benchmark():"1000000 events": 774 msecs per iteration (total: 774, iterations: 1) PASS : QCoreApplicationBenchmark::event_posting_benchmark() PASS : QCoreApplicationBenchmark::cleanupTestCase() Totals: 3 passed, 0 failed, 0 skipped ********* Finished testing of QCoreApplicationBenchmark ********* Change-Id: Ibf56d9526b0a8cbaf171008da4104bb457628172 Reviewed-by: Sergio Ahumada <sergio.ahumada@nokia.com>
* Fix typos parametter -> parameter.Stephen Kelly2011-12-271-2/+2
| | | | | Change-Id: I0ebb3658477a1afdc1af5f4f6f64f12dc20ace56 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Finish removing Qt3 supportBradley T. Hughes2011-12-231-3/+0
| | | | | | | | | | | | | | | | Remove the (-no)-qt3support options from configure, and remove the last remaining references to Qt3Support, QT3_SUPPORT, and QEvent::ChildInserted. The compatibilityChildInsertEvents() tests in tst_QObject and tst_QWidget have been renamed to childEvents(), which is a more appropriate name. Change-Id: Id0b45e9b177efcc8dceee8c9ed8afafedeeace2f Reviewed-by: Kai Koehne <kai.koehne@nokia.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: David Faure <faure@kde.org> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Remove redundant template parameter from QMetaType's internal classes.Jędrzej Nowacki2011-12-221-9/+6
| | | | | | | | | Filter doesn't have to be a parameter because we always use DefinedTypesFilter. Change-Id: I19b8eb47a4c50e290cf712f909aaead8fdc94cd9 Reviewed-by: João Abecasis <joao.abecasis@nokia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Fix movablity of QVariant.Jędrzej Nowacki2011-12-221-24/+35
| | | | | | | | | | | | | | | | After 8fd64d22ac7892b061a09c42c72aacf033b80876 (Make usage of internal QVariant space.) change QVariant started to "inherit" movablity from interned type. This change fix it by interning only movable type in QVariant and by using external allocation for not movable ones. Obviously, this change has negative impact on QVariant it self, but after it, QVariant will behave a lot nicer with our containers. Change-Id: Ibffc95833918f65be737f52d694ee81a2036c412 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Allow QMetaType to register information about movabilityJędrzej Nowacki2011-12-223-5/+107
| | | | | | | We need that information to perform some optimizations in QVariant. Change-Id: Id9a1716e49e4cedd17cd09a32fea4ff003ef61f2 Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
* Remove mention of Trolltech in installation path.Jason McDonald2011-12-211-2/+2
| | | | | | | | Task-number: QTBUG-19653 Change-Id: Ic92e0bb4980af53568efe77ebc72e048ee5a32d7 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Revert "Revert "Add QObject::objectNameChanged(con... signal""Alan Alpert2011-12-202-6/+14
| | | | | | | | | This reverts commit 9b17557f3bbd5135651bcedf9f10e61d7e078ae2. Justification: Temporary commit, see JIRA task. Task-number: QTBUG-22985 Change-Id: I3df9eb5fdbdc133349dca5e192dcfcc9e758626c Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Better error reporting in case of connection failure.Olivier Goffart2011-12-202-20/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use Q_STATIC_ASSERT_X give a better error message. If C++11 is used, you get the string in the error. Else, clicking on the QStaticFailure error still shows you the string in the qobject.h source code) And report better failure if the return types do not match. (Without the static assert, you would still have a compilation error, but in an unrelated place, with no reference to the actual connect() call. The error was thrown from the virtual call QSlotObject::call, without saying where it was instantiated) Previously the error was relying on the existence of a type inside CheckCompatibleArguments, but the Q_STATIC_ASSERT requires a bool (hence the introduction of CheckCompatibleArguments::value) There also was a typo in the return value of AreArgumentsCompatible::dummy that made that code not work, and that error not be reported. (Instead, the error was reported when QObjectSlot::call is instantiated) Specialization of AreArgumentsCompatible for the void type have been added because if the return value of a signal or slot is void, the connection should work. Change-Id: I5a93ec787ce2a4b94a26630ca31d5001cd294e4d Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Do not call QueuedConnection slot on partialy destroyed objectOlivier Goffart2011-12-191-1/+1
| | | | | | | | | | | | This is a regression introduced in Qt 4.8 When QApplication::processEvents is called from a destructor, it is possible that pending events would still be called on the already destroyed subclass. Prevent that by using the same pattern as in QMetaObject::activate Change-Id: Ida50db07ae089264402dafcde7a41a066479d08b Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Make QMetaTypeInterface POD.Jędrzej Nowacki2011-12-192-26/+31
| | | | | | | | | QMetaTypeInterface has to be POD because it is constructed in a static array. Constructors in POD types are not allowed so we will use a macro instead. Change-Id: Iab9ae776dfe4dcd7148558f02d6181c5917aa5c3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Merge integrity support into unix.Robin Burchell2011-12-151-19/+1
| | | | | | | | | | | | | Since integrity was pulling in all the same code (except the glib-in-QT_CONFIG branch), we can just merge this in. This shouldn't break integrity unless they somehow magically inject glib into QT_CONFIG without actually having glib, but the removal of redundancy makes this worthwhile. Change-Id: I527b5e60bea4452fdca5eedfe729214f16519234 Reviewed-by: Rolland Dudemaine <rolland@ghs.com> Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
* Remove Symbian support from /src/corelib/kernel/.Robin Burchell2011-12-157-2570/+1
| | | | | | | Change-Id: Ic4a1b4f074d2ffd4cdfcb44e47c9bfccc2378760 Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
* Split timer handling out of QEventDispatcherUnix.Robin Burchell2011-12-155-387/+511
| | | | | | | | This makes it easier to see the guts of the unix event dispatcher, and to experiment with it. Change-Id: I715bb68c4de6798e10bc55304a128b88e0249c63 Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
* Remove unused ownObjectName field from QObjectDataBradley T. Hughes2011-12-151-2/+1
| | | | | | | | | | This field isn't used at all in qtbase, nor in any of the qt5 submodules. Change-Id: If57d389935593f797818506a220c6a3cc04b6078 Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove QT_JAMBI_BUILD codeBradley T. Hughes2011-12-154-80/+2
| | | | | Change-Id: Ic9231b11293af4352f11cf075893175f0c9a471f Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Correct sizeof(QObjectData) after out-of-order cherry-picks by GerritBradley T. Hughes2011-12-151-1/+1
| | | | | | | | | | Commits a6ae75f92a8628c727a9c5a9961fa91c583c008e and 6f0f9f69288925ef423c542ef5eb7302a5431867 were cherry-picked in the wrong order (despite the dependencies shown in Gerrit), causing the QObjectData::unused bitfield to be too large. Change-Id: I65acaa8b507f7f6f2c5735f45bd0ad8343abea54 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Fix typos in QObject::(dis)connect warningsGiuseppe D'Angelo2011-12-151-11/+11
| | | | | | | | For some strange reason "Object::method ..." was printed, without the leading Q. Change-Id: I10b99e8aa8730e4020d15b3e04a01004bade76c3 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Move QAbstractItemModel into a separate directory.Stephen Kelly2011-12-134-4045/+0
| | | | | Change-Id: Ib505520dd5b52743634befbf3f148d7f8c21ec44 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make QApplication::type() set by QGuiApplication.Frederik Gladhorn2011-12-122-0/+14
| | | | | | | | | | | | | | | QApplication::type used to be static and set by the QApplicationPrivate constructors. In QCoreApplication we have the new application_type that should take its place. QApplication::GuiServer is deprecated (since it doesn't have any functionallity any more with QWS being removed). This change prepares QStyle to be called from a QQuickCanvase based application that does not inherit the QWidget version of QApplication. Change-Id: Ifbe992e25f1e5821fa047b6eb915f75fa675ab97 Reviewed-by: Paul Olav Tvete <paul.tvete@nokia.com>
* Remove QMetaObject guards and deprecate QPointer.Bradley T. Hughes2011-12-106-140/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | QWeakPointer is superior and preferred. Remove QMetaObject::addGuard(), QMetaObject::changeGuard(), QMetaObject::removeGuard(), and QObjectPrivate::clearGuards(). Implement QPointer using QWeakPointer<T> instead. This changes the behavior of QPointer in 2 ways: - During destruction of a QWidget. Previously, the destructor of QWidget would reset all QPointers so that they would return zero when destroying children. Update tst_QPointer to account for this change. - When constructing a QSharedPointer to take ownership of an object after a QPointer is already tracking the object. Previously, the shared pointer construction would not be affected by the QPointer, but now that QPointer is implemented using QWeakPoiner, constructing the QSharedPointer will cause an abort(). Fix tst_QSharedPointer by removing the use of QPointer in the objectCast() test. These behavior changes are documented in the QPointer class documentation and in the changes file. Change-Id: I92d0276219c076ece7bcb60f6e1b9120ce4f5747 Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Don't overload the meaning of QObjectData::wasDeletedBradley T. Hughes2011-12-102-6/+8
| | | | | | | | | | | | | | | | | | The union in QObjectPrivate of declarativeData and currentChildBeingDeleted shouldn't use wasDeleted to determining the meaning of the unioned pointer. Instead, add QObjectData::isDeletingChildren, set that in QObjectPrivate::deleteChildren(), and only use the currentChildBeingDeleted member when the parent's isDeletingChildren is set. This solves aborts seen in autotests when widgets are deleting window children. The abort comes from QWeakPointer on the parent in the child's close event handler (the abort checks that wasDeleted is not set). Change-Id: I1a58449159d4a5312aad8ba12e559d05d6c43d93 Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Remove the backwards compatibility signal emissions when moving items.Stephen Kelly2011-12-081-12/+0
| | | | | | Change-Id: I29a44835d3397c1dbf37026daf0c5234dae770e0 Reviewed-by: David Faure <faure@kde.org> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Avoid variable shadowing in qobject_impl.hKent Hansen2011-12-081-1/+1
| | | | | | | | | Some people like to build their Qt-based projects with -Wshadow -Werror, and since qobject_impl.h is included from a public Qt header, their build breaks. Change-Id: I5d8a5ee1937092149a18c0ff66a723f5bfc9ffc3 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Re-add QInternal::EventNotifyCallbackBradley T. Hughes2011-12-051-0/+8
| | | | | | | | | This is needed by QtScript, so we need to keep it for now. Change-Id: Iee6bd7daf7e86a09242523f5aca72ede413a6981 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Remove QInternal callbacks and internal functionsBradley T. Hughes2011-12-022-55/+0
| | | | | | | | | | | | | | | | After commit 79f675a1e0f628bbc25345ebc1eb1f5809166c6b, the connect and disconnect callback API effectively becomes useless. Now that these callbacks cannot/do not, it makes little sense to keep the backdoors added for Qt Jambi support. Remove them for now. Should the Qt Jambi team want/need to port to Qt 5, we can re-add them, possibly designing a better API for doing so as well. Change-Id: I6209a1d647d683c979d5294b632b8c12c0f9f91c Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Revert "Add QObject::objectNameChanged(const QString &objectName) signal"Martin Jones2011-12-022-14/+6
| | | | | | | | | | | This reverts commit ba635d7e74472f3a54c0c4686966af46d9035c6f. Breaks tests in declarative: tst_qdeclarativeecmascript::deleteLater tst_qquickvisualdatamodel::objectListModel Change-Id: I467b45109332e66fc62f3de00f376b1b88ab19ca Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
* Add QObject::objectNameChanged(const QString &objectName) signalBradley T. Hughes2011-12-012-6/+14
| | | | | | | | | | | | | | | | | | | This is sent when the object's name changes. tst_moc must be updated since the method count of QObject has changed. The test assumed that there were 4 invokable methods in QObject. The new signal is the 5th, which breaks the test's assumptions. Fix this as well. tst_QObject must be updated since the QObjectPrivate::isSignalConnected() method only supports the first 64 signals. With the addition of this new signal, sig61() in the test becomes the 65th signal, and will always appear connected now. Task-number: QTBUG-13999 (related) Change-Id: Ie87893c71a231fafa7ccf2f16102238a7be8327a Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Improve Q_CONSTRUCTOR_FUNCTION and Q_DESTRUCTOR_FUNCTION macros.Jędrzej Nowacki2011-12-011-2/+2
| | | | | | | | | | | | | By adding anonymous namespace and static linkage we are reducing visibility of implementation of these macros. This patch also fixes warning about a declared but unused variable which was issued by gcc 4.6 for Q_CONSTRUCTOR_FUNCTION. Change-Id: I2cb70ad4c93f6f77e5518420abcce6fd4cadccfa Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com> Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
* Polish QWinEventNotifier.Friedemann Kleint2011-12-012-7/+6
| | | | | | | | Fix docs, remove redundant Q_DISABLE_COPY. Change-Id: I8398fb71bced5ac6f7eb8613cd2f8d10c325f056 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Make QWinEventNotifier part of the public APIDebao Zhang2011-12-014-18/+105
| | | | | | | | | | | | QWinEventNotifier is an essential class if you're using native Windows Overlapped IO and need to convert it to Qt signals. However the header is marked private. Task-number: QTBUG-68 Change-Id: I22e9a84da97f969ddb82e9ba15e604a01abd80d0 Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Merge QObject::tr*() and QCoreApplication::translate() overloadsBradley T. Hughes2011-11-305-61/+11
| | | | | | | | These were marked as TODO items for Qt 5. Do them now. (The TODO item was added when plural support was added back in the early Qt 4 days.) Change-Id: I3be50bc657582db730401103d691234695784340 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Support for up to 6 arguments in the new connection syntaxOlivier Goffart2011-11-301-0/+139
| | | | | | | For compilations without variadic template support Change-Id: I78af4f6022ad7a0923e5c5788a34eb7d834f50f3 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Fix Qt::QueuedConnection when signal has a return valueOlivier Goffart2011-11-301-2/+4
| | | | | | | | | | For queued connections, the args[0] is set to null as it make no sens to forward the return value to the signal. So we need to check in the operator, that the pointer is not null. (container.data is args[0]) Change-Id: I80bde66f1ec19de0f4962c80e5b2797d2819075c Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Fix a deadlock in QMetaType.Jędrzej Nowacki2011-11-291-8/+12
| | | | | | | | | | | QMetaType should unlock all mutexes guarding custom types data before calling an user code. Task-number: QTBUG-22930 Change-Id: I501d011d6cbd467d8f22402d668e84aa848061b8 Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* Support Qt::UniqueConnection in the new connection syntaxOlivier Goffart2011-11-292-13/+59
| | | | | | | | | | This commit also improves the related documentation a bit. The test is copied from the test with the old syntax, but all the connection statement are changed to use the new syntax Change-Id: Ia5630ca4335b9f8ca6d724ae3c8750d6f0804d8e Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Reduce code dupplication in QObject::connectOlivier Goffart2011-11-291-29/+22
| | | | | | | | | Move from each implementation of QObject::connect to QObjectPrivate::addConnection the code that adds the QObjectPrivate::Connection* to the sender's list. Change-Id: I665af016d5e6673eb0e9c06965e5deed50454b28 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* QObject::disconnect with new syntaxOlivier Goffart2011-11-293-13/+137
| | | | | | | | | | | | | | | | | | | | | This add an overload to disconnect which is symetrical to the new syntax of connect. It is possible to diconnect connection like this: QObject::connect( sender, &Sender::valueChanged, receiver, &Receiver::updateValue ); QObject::disconnect( sender, &Sender::valueChanged, receiver, &Receiver::updateValue ); This overload only work with pointer to member function, and not static functions or functors. The test is copied from tst_QObject::disconnect(), just changed the syntax of the connection and disconnection Change-Id: Ia8f819100cb12098e32877522b97b732b1e676a8 Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Redefinition of QVariant::Type.Jędrzej Nowacki2011-11-291-60/+58
| | | | | | | | | | QVariant::Type is redundant, it copies QMetaType::Type enum. In long term it might be removed completely, but it wouldn't be a source compatible change. Change-Id: Ibe79ca0ab43918b4cf767cd7a5040f865abbf03f Reviewed-by: Olivier Goffart <ogoffart@woboq.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove obsolete QMetaObject::activate() overloads.Bradley T. Hughes2011-11-292-27/+2
| | | | | | | | | | | | | | | The overloads taking a range were previously used for cloned signals (ones that had default arguments). Commit 919b723088b8617b202b92d80b8d0983e4fd9500 changed how cloned signals are handled, making the from,to overloads obsolete. The 3 argument activate() overload that does not take a QMetaObject argument was marked obsolete by the same commit, but considering that it is used by our autotests, I've decided to keep it and not mark it as obsolete anymore. Change-Id: I631ce84dce156dec68cf26e10787cb35e3f50e18 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Fix documentation for QVariant::Type enum.Jędrzej Nowacki2011-11-281-1/+1
| | | | | | | | QPolygonF was missing. QPointArray doesn't exist anymore. Change-Id: I764508f67d859c8519b44a6a1ee19d1f96ebe1cf Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Fix linking of the QObject test under Windows.Friedemann Kleint2011-11-281-2/+2
| | | | | Change-Id: Iced5a37893969f555f39d3f4683b32ca2a399365 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>