summaryrefslogtreecommitdiffstats
path: root/tests/auto/qsharedpointer
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote branch 'origin/4.6' into qt-4.7-from-4.6Thiago Macieira2010-07-151-0/+56
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: bin/syncqt src/3rdparty/webkit/VERSION src/3rdparty/webkit/WebCore/ChangeLog src/3rdparty/webkit/WebCore/bridge/qt/qt_instance.cpp src/3rdparty/webkit/WebCore/bridge/qt/qt_runtime.h src/3rdparty/webkit/WebCore/page/FrameView.cpp src/3rdparty/webkit/WebCore/page/FrameView.h src/3rdparty/webkit/WebCore/platform/ScrollView.cpp src/3rdparty/webkit/WebCore/platform/ScrollView.h src/corelib/plugin/quuid.cpp src/gui/dialogs/qfontdialog.cpp src/multimedia/audio/qaudiodevicefactory.cpp src/opengl/qgl.cpp src/openvg/qpaintengine_vg.cpp tests/auto/qxmlquery/tst_qxmlquery.cpp
| * Fix a crash when recursing into QSharedPointer from QSharedPointer::clear()Thiago Macieira2010-07-091-0/+56
| | | | | | | | | | | | | | | | | | | | | | | | | | We used to delete the tracked object before the new tracking was properly set up in QSharedPointer. That means if the tracked object's destructor or deletion function recursed into the QSharedPointer, it would find itself in an inconsistent state. So instead finish the setup and only then call out to user code. That ensures the internal state is always valid. Task-number: QTBUG-11730 Reviewed-by: ossi
* | Merge remote branch 'origin/4.6' into qt-4.7-from-4.6Thiago Macieira2010-03-313-18/+4
|\ \ | |/ | | | | | | | | | | | | Conflicts: configure doc/src/modules.qdoc src/gui/graphicsview/qgraphicsitem_p.h src/gui/graphicsview/qgraphicswidget.h
| * Autotest: don't allow choosing between debug/release mode.Thiago Macieira2010-03-303-18/+4
| | | | | | | | | | | | | | You can't build for debug mode on Windows if Qt wasn't built in debug mode. So force the selection to be exactly what Qt was built. Reviewed-by: Trust Me
* | Add operator< and qHash for QSharedPointer and fix operator-.Thiago Macieira2010-02-151-0/+100
| | | | | | | | | | | | This allows using QSharedPointer in QHash and QMap keys. Reviewed-by: Bradley T. Hughes
* | Merge branch '4.6'Thiago Macieira2010-01-138-8/+8
|\ \ | |/ | | | | | | | | | | | | | | | | | | Conflicts: bin/syncqt doc/src/deployment/deployment.qdoc src/corelib/io/qfsfileengine_win.cpp src/corelib/xml/qxmlstream.cpp src/opengl/gl2paintengineex/qpaintengineex_opengl2_p.h tools/assistant/tools/assistant/centralwidget.cpp tools/linguist/lupdate/main.cpp
| * Update copyright year to 2010Jason McDonald2010-01-068-8/+8
| | | | | | | | Reviewed-by: Trust Me
* | Merge commit 'origin/4.6'Olivier Goffart2009-12-151-0/+10
|\ \ | |/ | | | | | | | | | | Conflicts: src/corelib/io/qfsfileengine.cpp src/network/access/qnetworkrequest.cpp tests/auto/qgraphicswidget/tst_qgraphicswidget.cpp
| * Autotest: ensure that QSharedPointer does proper autocasting throughThiago Macieira2009-12-081-0/+10
| | | | | | | | | | | | | | | | function calls. Seen on qt-interest. Reviewed-by: Trust Me
* | small simplification of code to run the platform make tool in an autotestThierry Bastian2009-11-171-8/+2
|/
* Autotest: fix false positives with MSVC.NET 2003Thiago Macieira2009-10-091-1/+19
| | | | | | | | This is definitely a compiler bug. The compiler forgets to adjust the value of the pointers inside the template operator== function. If you make the call outside the template function, it works as expected. Reviewed-by: Trust Me
* Autotest: fix forward-declaration test.Thiago Macieira2009-10-091-1/+5
| | | | | | | The problem was that we forward-declared as struct, but the function was implemented as class. It's different on MSVC. Reviewed-by: Trust Me
* Autotest: disable the forwardDeclared1 test in WinSCW too.Thiago Macieira2009-10-051-1/+1
| | | | | | | | | It also invokes the destructor directly, even on forward-declared types. That must be an ABI convention. This test isn't reliable. Reviewed-by: TrustMe
* Autotest: Don't run 15 and 35 threads on Windows CE.Thiago Macieira2009-10-051-1/+2
| | | | | | | The device can't cope, so let's keep only the small thread count tests there. Reviewed-by: Trust Me
* Enabled the QTEST_NO_RTTI flag for WindowsCEninerider2009-09-252-1/+4
| | | | | | WindowsCE will not do any tests involving dynamic casts. Reviewed-by: Joerg
* Update license headers again.Jason McDonald2009-09-098-32/+32
| | | | Reviewed-by: Trust Me
* Update tech preview license header for files that are new in 4.6.Jason McDonald2009-08-315-65/+65
| | | | Reviewed-by: Trust Me
* Merge branch '4.5' into 4.6Thiago Macieira2009-08-313-39/+39
|\ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: demos/boxes/glshaders.cpp demos/boxes/vector.h demos/embedded/fluidlauncher/pictureflow.cpp demos/embedded/fluidlauncher/pictureflow.h doc/src/desktop-integration.qdoc doc/src/distributingqt.qdoc doc/src/examples-overview.qdoc doc/src/examples.qdoc doc/src/frameworks-technologies/dbus-adaptors.qdoc doc/src/geometry.qdoc doc/src/groups.qdoc doc/src/objecttrees.qdoc doc/src/platform-notes.qdoc doc/src/plugins-howto.qdoc doc/src/qt3support.qdoc doc/src/qtdbus.qdoc doc/src/qtdesigner.qdoc doc/src/qtgui.qdoc doc/src/qtmain.qdoc doc/src/qtopengl.qdoc doc/src/qtsvg.qdoc doc/src/qtuiloader.qdoc doc/src/qundo.qdoc doc/src/richtext.qdoc doc/src/topics.qdoc src/corelib/tools/qdumper.cpp src/gui/embedded/qkbdpc101_qws.cpp src/gui/embedded/qkbdsl5000_qws.cpp src/gui/embedded/qkbdusb_qws.cpp src/gui/embedded/qkbdvr41xx_qws.cpp src/gui/embedded/qkbdyopy_qws.cpp src/gui/embedded/qmousebus_qws.cpp src/gui/embedded/qmousevr41xx_qws.cpp src/gui/embedded/qmouseyopy_qws.cpp src/gui/painting/qpaintengine_d3d.cpp src/gui/painting/qwindowsurface_d3d.cpp src/opengl/gl2paintengineex/glgc_shader_source.h src/opengl/gl2paintengineex/qglpexshadermanager.cpp src/opengl/gl2paintengineex/qglpexshadermanager_p.h src/opengl/gl2paintengineex/qglshader.cpp src/opengl/gl2paintengineex/qglshader_p.h src/opengl/util/fragmentprograms_p.h src/plugins/kbddrivers/linuxis/linuxiskbdhandler.cpp src/plugins/mousedrivers/linuxis/linuxismousehandler.cpp src/script/parser/qscript.g src/script/qscriptarray_p.h src/script/qscriptasm_p.h src/script/qscriptbuffer_p.h src/script/qscriptclass.cpp src/script/qscriptclassdata_p.h src/script/qscriptcompiler.cpp src/script/qscriptcompiler_p.h src/script/qscriptcontext.cpp src/script/qscriptcontext_p.cpp src/script/qscriptcontext_p.h src/script/qscriptcontextfwd_p.h src/script/qscriptecmaarray.cpp src/script/qscriptecmaarray_p.h src/script/qscriptecmaboolean.cpp src/script/qscriptecmacore.cpp src/script/qscriptecmadate.cpp src/script/qscriptecmadate_p.h src/script/qscriptecmaerror.cpp src/script/qscriptecmaerror_p.h src/script/qscriptecmafunction.cpp src/script/qscriptecmafunction_p.h src/script/qscriptecmaglobal.cpp src/script/qscriptecmaglobal_p.h src/script/qscriptecmamath.cpp src/script/qscriptecmamath_p.h src/script/qscriptecmanumber.cpp src/script/qscriptecmanumber_p.h src/script/qscriptecmaobject.cpp src/script/qscriptecmaobject_p.h src/script/qscriptecmaregexp.cpp src/script/qscriptecmaregexp_p.h src/script/qscriptecmastring.cpp src/script/qscriptecmastring_p.h src/script/qscriptengine.cpp src/script/qscriptengine_p.cpp src/script/qscriptengine_p.h src/script/qscriptenginefwd_p.h src/script/qscriptextenumeration.cpp src/script/qscriptextenumeration_p.h src/script/qscriptextqobject.cpp src/script/qscriptextqobject_p.h src/script/qscriptextvariant.cpp src/script/qscriptfunction.cpp src/script/qscriptfunction_p.h src/script/qscriptgc_p.h src/script/qscriptmember_p.h src/script/qscriptobject_p.h src/script/qscriptprettypretty.cpp src/script/qscriptprettypretty_p.h src/script/qscriptvalue.cpp src/script/qscriptvalueimpl.cpp src/script/qscriptvalueimpl_p.h src/script/qscriptvalueimplfwd_p.h src/script/qscriptvalueiteratorimpl.cpp src/script/qscriptxmlgenerator.cpp src/script/qscriptxmlgenerator_p.h tests/auto/linguist/lupdate/testdata/recursivescan/project.ui tests/auto/linguist/lupdate/testdata/recursivescan/sub/finddialog.cpp tests/auto/qkeyevent/tst_qkeyevent.cpp tools/linguist/shared/cpp.cpp
| * Update tech preview license header.Jason McDonald2009-08-313-39/+39
| | | | | | | | Reviewed-by: Trust Me
| * Update license headers.Jason McDonald2009-08-113-3/+3
| | | | | | | | Reviewed-by: Trust Me
* | Mark the QSharedPointer with Qt::Uninitialized explicitThiago Macieira2009-08-281-0/+12
| | | | | | | | | | | | | | That ensures we don't create ambiguities. QSharedPointer shouldn't have any implicit constructors. Suggested-By: Olivier Goffart
* | make moc, qregion and qsharedpointer autotest compile with namespaceshjk2009-08-212-0/+5
| |
* | Merge commit 'qt/master'Jason Barron2009-08-201-15/+1
|\ \ | | | | | | | | | | | | | | | | | | | | | Conflicts: examples/painting/svgviewer/files/bubbles.svg src/corelib/kernel/qobject.cpp src/network/kernel/qhostinfo.cpp tests/auto/qhostinfo/tst_qhostinfo.cpp
| * | Autotest: remove unreliable test.Thiago Macieira2009-08-201-15/+0
| | | | | | | | | | | | | | | | | | | | | | | | This test required Qt to be built in debug mode. But there's no way of checking that from the autotest: some of our test machines build Qt in release mode but the tests in debug mode. So we don't test the Q_ASSERT.
| * | Autotest: add one more check for operator==Thiago Macieira2009-08-201-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I'm running out of ideas as to why MSVC.NET 2003 cannot do this test: baseptr == aData If I do baseptr.data() == aData, it works. And the operator== that it should be calling does exactly that. So my only clue so far is that it's calling some other operator== -- which doesn't make sense, since there is no other.
* | | Merge branch 'master' of git@scm.dev.nokia.troll.no:qt/qtaxis2009-08-191-4/+33
|\ \ \ | |/ / | | | | | | | | | Conflicts: tests/auto/auto.pro
| * | Autotest: Be very pedant about the tests. There's at least one compilerThiago Macieira2009-08-181-4/+33
| | | | | | | | | | | | where it breaks, so let's find out where.
* | | Merge commit 'qt/master'Jason Barron2009-08-181-0/+32
|\ \ \ | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: doc/src/examples.qdoc doc/src/plugins-howto.qdoc doc/src/topics.qdoc examples/phonon/musicplayer/mainwindow.cpp src/3rdparty/freetype/src/base/ftobjs.c src/corelib/global/qglobal.h src/corelib/tools/qalgorithms.h src/corelib/tools/qshareddata.cpp src/corelib/tools/qsharedpointer.cpp src/corelib/tools/tools.pri src/corelib/xml/qxmlstream.h src/gui/painting/painting.pri src/gui/widgets/qdatetimeedit.cpp tests/auto/qdesktopservices/qdesktopservices.pro tests/auto/qgraphicsitem/tst_qgraphicsitem.cpp tests/auto/qtextcodec/test/test.pro
| * | Reimplement qSwap and Q_DECLARE_SHARED differently.Thiago Macieira2009-08-141-0/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | This enables the use of Q_DECLARE_SHARED with d-pointers that are QExplicitlySharedDataPointer<PrivateClass>. Also, this enables swapping atomically QSharedPointers. Reviewed-by: Harald Fernengel
* | | Merge commit 'qt/master'Jason Barron2009-08-138-8/+25
|\ \ \ | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: examples/opengl/samplebuffers/glwidget.cpp src/corelib/io/qfsfileengine_unix.cpp src/corelib/kernel/qobject.cpp src/corelib/tools/qsharedpointer.cpp src/gui/gui.pro tests/auto/qhttp/tst_qhttp.cpp tests/auto/qkeyevent/tst_qkeyevent.cpp
| * | Autotest: make sure we can't create QWeakPointer from a QObject in destruction.Thiago Macieira2009-08-121-0/+15
| | | | | | | | | | | | This test only works in debug mode
| * | Update contact URL in license headers.Jason McDonald2009-08-128-8/+8
| | | | | | | | | | | | Reviewed-by: Trust Me
| * | tst_QSharedPointer fixed for Windows CEJoerg Bornemann2009-08-101-0/+2
| | | | | | | | | | | | | | | | | | We cannot create too many threads on Windows CE. Reviewed-By: thartman
* | | Merge commit 'qt/master-stable'Jason Barron2009-08-101-0/+145
|\ \ \ | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/kernel/qobject.cpp src/corelib/tools/qsharedpointer_impl.h src/gui/widgets/qdatetimeedit.cpp src/gui/widgets/qlinecontrol.cpp src/gui/widgets/qlineedit.cpp tests/auto/qcssparser/qcssparser.pro tests/auto/qicoimageformat/tst_qicoimageformat.cpp tests/auto/qmultiscreen/qmultiscreen.pro tests/auto/qresourceengine/qresourceengine.pro tests/auto/qresourceengine/tst_qresourceengine.cpp tests/auto/qscriptv8testsuite/tst_qscriptv8testsuite.cpp
| * | tst_qsharedpointer compile fix for Windows CEJoerg Bornemann2009-08-061-0/+4
| | | | | | | | | | | | | | | | | | There's no time() on Windows CE. Reviewed-by: Daniel Molkentin
| * | Restore symmetry between QSharedPointer and QWeakPointer on QObjects.Thiago Macieira2009-08-051-0/+31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With the previous commit, you could create a QWeakPointer from any QObject-derived object. It's possible because QObject now has a pointer to the QWeakPointer's d-pointer. However, if you did: QSharedPointer<QObject> obj(new QObject); QWeakPointer<QObject> weak1(obj); QWeakPointer<QObject> weak2(obj.data()); Then weak1 would shared d-pointers with QSharedPointer, but weak2 wouldn't. Also, weak1.toStrongRef() would work, but weak2.toStrongRef() wouldn't. This change makes QObject know where the d-pointer created by QSharedPointer is, so weak2 would get the same d-pointer. As a nice side-effect, you can check if a given QObject is shared by trying to promote its QWeakPointer to QSharedPointer. Reviewed-by: Bradley T. Hughes
| * | Add support for using QWeakPointer with QObject, replacing QPointer.Thiago Macieira2009-08-051-0/+110
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The problem with QPointer is that it's a simple QObject*. So the only way for QPointer to do what it's supposed to do is if the object it's pointing to clears all QPointers when getting deleted. That means the QObject must know each and every QPointer pointing to it. To make matters worse, QPointers can be deleted while the object they're pointing to also gets deleted. So deleting QObjects must do locking. The solution to the QPointer problem is that both QObject and the "QPointer" reference something outside the QObject. This way, QObject doesn't have to lock anything to destroy itself: it's simply setting a volatile integer to zero when it gets deleted. Since the integer is outside the QObject, the integer is also refcounted. It's also O(1), so there's no problem having as many "QPointer". The two-atomic-ints structure is exactly what QSharedPointer and QWeakPointer use internally. We just abuse this structure for QObject needs, setting the strong reference count to -1 to indicate that it's a QObject that cannot be managed by a QSharedPointer. But QWeakPointer can still work and replace QPointer neatly. Reviewed-by: Bradley T. Hughes Reviewed-by: Jarek Kobus
* | | Merge commit 'qt/master-stable'Jason Barron2009-08-044-43/+380
|\ \ \ | |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: config.tests/unix/openssl/openssl.pri demos/embedded/embedded.pro examples/itemviews/chart/chart.pro examples/network/network.pro examples/painting/painterpaths/painterpaths.pro examples/threads/mandelbrot/mandelbrot.pro qmake/project.cpp src/3rdparty/libtiff/libtiff/tif_config.h src/corelib/arch/arch.pri src/corelib/global/qglobal.cpp src/corelib/kernel/kernel.pri src/corelib/kernel/qcore_unix_p.h src/corelib/kernel/qobject.cpp src/corelib/thread/qthread_unix.cpp src/corelib/tools/qsharedpointer_impl.h src/corelib/tools/tools.pri src/gui/kernel/qaction.h src/gui/kernel/qapplication.cpp src/gui/painting/qregion.h src/gui/widgets/qlineedit.cpp src/gui/widgets/qlineedit_p.h src/network/socket/qnativesocketengine_unix.cpp tests/auto/qdir/tst_qdir.cpp tests/auto/qdiriterator/tst_qdiriterator.cpp tests/auto/qhttp/qhttp.pro tests/auto/qline/qline.pro tests/auto/qnetworkreply/tst_qnetworkreply.cpp tests/auto/qresourceengine/qresourceengine.pro tests/auto/qsharedpointer/qsharedpointer.pro tests/auto/qstring/qstring.pro tests/auto/qtcpsocket/qtcpsocket.pro tests/auto/qtcpsocket/tst_qtcpsocket.cpp
| * | Ensure that we never increase the strong reference count up from zero.Thiago Macieira2009-08-031-1/+124
| | | | | | | | | | | | | | | | | | Also add some thread stress tests to try and detect doing it wrong. Reviewed-By: Bradley T. Hughes
| * | Change the pointer-tracking code to work everywhere.Thiago Macieira2009-08-034-2/+145
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, if you create a QSharedPointer in code with pointer-tracking, you must ensure it gets deleted in code with pointer-tracking, otherwise the internal safety tracker will be "leaking" objects. The pointers would never get removed. And if any new pointer happened to have the same pointer address (which happens quite often), the tracker code would promptly abort the application. With this change, the untracking of the pointer is scheduled by the same code that creates the tracking. This is done by "abusing" the custom deleter code: - for the QSharedPointer that used ExternalRefCountWithDestroyFn already, we intercept the call to the destroy function and call the untracking function - for a normal QSharedPointer, we use the "normalDeleter" function as custom deleter and chain up above Note: the autotest only *really* works in release mode. Otherwise functions don't get inlined and do get merged by the linker. Reviewed-By: Bradley T. Hughes
| * | Don't forget to delete the deleter object too in QSharedPointer.Thiago Macieira2009-08-031-0/+13
| | | | | | | | | | | | | | | | | | Destructors have to be run for the subobjects we initialise. Reviewed-By: Bradley T. Hughes
| * | Remove the need for internal API in QSharedPointer.Thiago Macieira2009-08-032-41/+55
| | | | | | | | | | | | | | | | | | | | | That way, this code can be compiled with an earlier version of Qt and should still work in new ones. Reviewed-by: Trust Me
| * | Autotest: add a way to ensure that there are no safety-check pointers leakingThiago Macieira2009-08-031-0/+42
| | | | | | | | | | | | | | | In the future, it would be nice to split the autotest in multiple functions at every check().
| * | Merge branch '4.5'Thiago Macieira2009-08-031-0/+2
| |\ \ | | |/ | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/corelib/tools/qsharedpointer.cpp src/corelib/tools/qsharedpointer_impl.h src/gui/dialogs/qcolordialog.cpp src/gui/painting/qwindowsurface_raster.cpp src/network/access/qnetworkaccessmanager.cpp tests/auto/qsharedpointer/externaltests.cpp
| | * Autotest: disable the pointer-tracking tests in 4.5Thiago Macieira2009-08-031-0/+2
| | | | | | | | | | | | | | | | | | | | | The functionality these tests tested was broken in 4.5 and has been disabled. Therefore, these tests simply cannot pass. It's fixed in 4.6.
| | * Autotest: add a newline after the user program headers.Thiago Macieira2009-07-301-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | If the user forgot to end their headers with a newline, the compilation would fail because the next line is #include <QtCore/QtCore>. Reviewed-by: Jesper Thomschütz
| | * Fix a running external tests: user program headers must come first.Thiago Macieira2009-07-261-2/+2
| | | | | | | | | | | | | | | | | | No wonder QT_SHAREDPOINTER_TRACK_POINTERS was having no effect: there was an #include <QtCore/QtCore> before it. (cherry picked from commit 4c12010fac555bce0a6c8d69a267a56f4c15087f)
* | | Merge commit 'qt/master-stable'Jason Barron2009-07-301-0/+4
|\ \ \ | |/ / | | | | | | | | | | | | Conflicts: demos/demos.pro src/gui/graphicsview/qgraphicsitem_p.h
| * | Disable the forwardDeclared1 test with SunCC: it doesn't workThiago Macieira2009-07-281-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | I added this test because I thought that the compiler would find the forward-declarations due to the "one definition" rule. In hindsight, it's not a good idea. Sun CC warns about this, gcc doesn't. With Sun CC, the code leaks, with gcc it doesn't.
* | | Merge commit 'qt/master-stable'Jason Barron2009-07-282-14/+176
|\ \ \ | |/ / | | | | | | | | | | | | | | | | | | | | | Conflicts: configure.exe src/corelib/io/io.pri src/corelib/io/qfilesystemwatcher.cpp tests/auto/qfileinfo/tst_qfileinfo.cpp tools/configure/configureapp.cpp