summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel
Commit message (Collapse)AuthorAgeFilesLines
* Add QModelIndex as a built-in metatype.Stephen Kelly2012-01-114-1/+23
| | | | | Change-Id: Ib87cfff8b4baee78189f3df5e20d2e1a00d690e1 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* Remove redundant parameter from qVariantToHelper.Jędrzej Nowacki2012-01-111-26/+27
| | | | | Change-Id: I3664a74eb8602651547c0c80dc4f628f909d97b4 Reviewed-by: Stephen Kelly <stephen.kelly@kdab.com>
* Remove win*Message() exported functionsBradley T. Hughes2012-01-101-20/+0
| | | | | | | | They are nothing more than wrappers around the Win32 API, and marked for removable in Qt 5. Change-Id: Iaf34d463488feb7840185c7b46f65a031232e34a Reviewed-by: João Abecasis <joao.abecasis@nokia.com>
* Use Qt::TimerType on Windows when starting timersBradley T. Hughes2012-01-101-10/+13
| | | | | | | | | | | | | | | | | | Make all Qt::PreciseTimers and timers with intervals < 20ms use Multimedia timers for maximum accuracy. Qt::CoarseTimers and Qt::VeryCoarseTimers use normal Windows timers, with Qt::VeryCoarseTimers having their interval rounded to the nearest full second. Note that the Windows timer implementation does not attempt to align timers and reduce CPU wakeups like the UNIX implementation does. This might be done in the future, though. However, this change does the best we can do now, keeping most timers working as-is, while allowing explicit use of Multimedia timers via Qt::PreciseTimer. Change-Id: I1898272b101c572a2a9b9454fef27a651eb178f5 Reviewed-by: João Abecasis <joao.abecasis@nokia.com> Reviewed-by: Friedemann Kleint <Friedemann.Kleint@nokia.com>
* Reimplement QVariant to QDebug streaming.Jędrzej Nowacki2012-01-103-100/+57
| | | | | | | New implementation fixes some commented code marked as FIXME. Change-Id: If8f5bebedd65bcf8f839d804c2022ca79ef82ddf Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* C++11 delete some contructors which are not wanted.Stephen Kelly2012-01-101-2/+2
| | | | | | | Change-Id: I844a0872e81f1824928814edb8d21c0b6384283d Reviewed-by: Lars Knoll <lars.knoll@nokia.com> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Remove wrong assert from QMetaType.Jędrzej Nowacki2012-01-101-6/+0
| | | | | | | | | | | | | | | We can't assert that QMetaType helper arrays are initialized. In rare situations it may happen that QMetaType compiled without support for an external type (without compiled Gui or Widgets libraries) will be asked for additional information for the type. For example (assuming Qt is compiled with --no-gui): // typeId it may be received over network (QMetaType::QImage) void *ptr = QMetaType::create(typeId); Change-Id: I018a59b23def35c7574e7c921019b5db4f06e800 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Small QMetaType optimization.Jędrzej Nowacki2012-01-101-6/+6
| | | | | | | Prefer compile time check over a runtime. Change-Id: Ib78563083c765d1fd72217c5aa529d0cbb951130 Reviewed-by: Olivier Goffart <ogoffart@woboq.com>
* Rename handler/handlerManager.Stephen Kelly2012-01-091-4/+4
| | | | | Change-Id: Idbac004120ea686d403421ea4f2fb4db87f55149 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
* Export QTimerInfoListBradley T. Hughes2012-01-091-1/+1
| | | | | | | | | ... so that QCocoaEventDispatcher can use it to implement timer handling and benefit from the Qt::TimerType support in QTimerInfoList. Change-Id: I34b81502465963e2c9d528df463fa2eccd275ad6 Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* QTimerInfo::expected is only needed for debuggingBradley T. Hughes2012-01-062-10/+17
| | | | | | | | | The code for calculating the expected time is only useful for debugging purposes. Don't compile this into the library unless QTIMERINFO_DEBUG is defined. Change-Id: I6530e6a70410a12544410ef286225df98ceddcee Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Remove all non-inline of qMalloc/qFree/qRealloc.Robin Burchell2012-01-064-13/+13
| | | | | | | | | | | | We're trying to deprecate these, so don't use them anymore. The inline uses of these have been left intact, for the moment. Inline code will need to create their own non-inline allocation methods (for future-proofing to allow alterations in how e.g. individual containers allocate) Change-Id: I1071a487c25e95b7bb81a3327b20c5481fb5ed22 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
* Do not always compile in QTimerInfoList::repairTimers()Bradley T. Hughes2012-01-052-13/+13
| | | | | | | | | | | | This function is never called on systems that are guaranteed to have a monotonic click (like Mac OS X). Remove the dead code from the library. Change-Id: I95852c8dffaa3a9747367f0abe4a4c62e4f86421 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: João Abecasis <joao.abecasis@nokia.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net> Reviewed-by: Lars Knoll <lars.knoll@nokia.com>
* Use Qt::TimerType on UNIX when scheduling timersBradley T. Hughes2012-01-052-7/+254
| | | | | | | | | | | | | | | | As stated in the documentation for Qt::TimerType, we allow for up to 5% error for CoarseTimers (the default timer type). PreciseTimers are not adjusted at all, and VeryCoarseTimers fire with one-second accuracy. The objective is to make most timers wake up at the same time, thereby reducing CPU wakeups. Note that this changes makes it possible for timers to fire early, which may be unexpected for some applications. Such applications should use PreciseTimers explicitly. Author: Thiago Macieira <thiago.macieira@nokia.com> Change-Id: Iaa70314c39a446adbc6dbb6fdfa7bafcd98a7283 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* Make socket descriptors qintptr.Jonas M. Gastal2012-01-052-3/+3
| | | | | | | | | | Windows x64 uses 64 bits integer for sockets, to ensure compatibility we should use ptr sized integers for our socket descriptors. Task-number: QTBUG-19004 Change-Id: I4b56023874a4f1bad107c66c054fecfedde33d88 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
* Document that QBasicTimer::start(int, QObject*) uses Qt::CoarseTimerBradley T. Hughes2012-01-051-3/+4
| | | | | | | Change-Id: I553b33ac7adffb0a4fcdfc14d6e34b4e7a494c4d Reviewed-by: David Faure <faure@kde.org> Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Warn when using QBasicTimer::start() incorrectlyBradley T. Hughes2012-01-051-2/+6
| | | | | | | | | | | Previously, QObject::startTimer() would warn when called from QBasicTimer::start() if there was no event dispatcher for the object's thread. QBasicTimer::start() should output a similar warning when there is no event dispatcher for the current thread. Change-Id: I1152f73216c3551c252a7a6995defebc9e1506c8 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* Update copyright year in license headers.Jason McDonald2012-01-0589-91/+91
| | | | | Change-Id: I02f2c620296fcd91d4967d58767ea33fc4e1e7dc Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
* 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>