aboutsummaryrefslogtreecommitdiffstats
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Merge remote-tracking branch 'origin/5.3' into devFrederik Gladhorn2014-07-0212-26/+64
|\ | | | | | | | | | | | | | | | | | | Conflicts: .qmake.conf examples/quick/scenegraph/openglunderqml/squircle.h src/quick/doc/src/qmltypereference.qdoc src/quick/scenegraph/qsgthreadedrenderloop.cpp Change-Id: Ife4f4b897044a7ffcd0710493c6aed1d87cf1ef9
| * Avoid double deletion of QQuickWindowShawn Rutledge2014-06-301-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | It's uncertain why 4fc0df58b8458052a818e3e970a97457882808e6 added the call to sendPostedEvents(0, QEvent::DeferredDelete) but now we can see that it easily results in the destructor calling itself, and therefore double-deleting its own d_ptr. removePostedEvents seems safer to ensure that the window cannot be doubly deleted, in spite of the qdoc warning that "You should never need to call this function." Task-number: QTBUG-33436 Change-Id: I4873ebe179dde551407eba1f6baac5f03ca7f177 Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
| * Fix intermittent crash with older MinGW releasesRobin KAY2014-06-271-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | An alternate code-path was previously added to work around a bad signature for the SHParseDisplayName() function in older and non-w64 versions of the MinGW headers. This code-path incorrectly passed a single rather double indirect pointer to the third argument of that function causing it to produce corrupt data and subsequently crash. This change modifies the code to instead cast a pointer of the correct type to the incorrect type expected by the headers. Task-number: QTBUG-39793 Change-Id: I4d65dea4fc38d7e885468cd23434d8570c311fc2 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
| * Merge remote-tracking branch 'origin/stable' into 5.3Frederik Gladhorn2014-06-253-5/+7
| |\ | | | | | | | | | Change-Id: Iafccb173a9b5569bc9fd1022abb210955519fc61
| | * Update QtQuick import value to 2.3Samuel Gaist2014-06-232-5/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The current documentation uses import QtQuick 2.2 which is wrong since there are new APIs like mipmap for the QML Image element. Task-number: QTBUG-39302 Change-Id: I3cc3a1522efd85090c3b4011429fa16b95e79435 Reviewed-by: J-P Nurmi <jpnurmi@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| | * Set locked state while locking for grab.Gunnar Sletta2014-06-201-0/+2
| | | | | | | | | | | | | | | | | | Change-Id: If4b8fa77e6e3a288487a011e83791ad6a189675c Reviewed-by: Manish Sharma <83.manish@gmail.com> Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
| * | Fix crash when deleting component in Component.onComplete through loaderSimon Hausmann2014-06-232-7/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a regression introduced with Qt 5.3.0. The recursion watcher code that is supposed to handle the test case of QTBUG-39775 can detect the recursion into the object creator. However the boolean that indicates the recursion is a member of a structure that's deleted afterwards. To avoid access to deleted memory, this patch simply reference counts data structure shared between the creators and also wraps the recursion watcher into a convenience class that also increases/decreases the reference count accordingly. Change-Id: I8d2e3e200ab1295e89d951e09f187d382a056d5a Task-number: QTBUG-39775 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * | Fix memory leak in QQmlComponent::createObjectSimon Hausmann2014-06-232-6/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | Regression introduced with 5.3.0. Prevent the leak of the object creator on repeated createObject calls by using a scoped pointer. Change-Id: Ib4fe7c9c6926c2390f7ae78f3287bb7da5f60527 Task-number: QTBUG-39742 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
| * | QQmlObjectCreator: Clear sharedState componentAttached in destruction/clearAlbert Astals Cid2014-06-201-0/+9
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes crash when delegate is being deleted while not totally instantiated Valgrind trace: ==15748== Invalid write of size 8 ==15748== at 0x57A02DB: QQmlComponentAttached::~QQmlComponentAttached() (qqmlcomponent.cpp:985) ==15748== by 0x57A0318: QQmlComponentAttached::~QQmlComponentAttached() (qqmlcomponent.cpp:989) ==15748== by 0x668736B: QObjectPrivate::deleteChildren() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x66900EB: QObject::~QObject() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x5D1D4B5: QQuickItem::~QQuickItem() (qquickitem.cpp:2064) ==15748== by 0x5D33AE5: QQmlPrivate::QQmlElement<QQuickItem>::~QQmlElement() (qqmlprivate.h:106) ==15748== by 0x668736B: QObjectPrivate::deleteChildren() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x66900EB: QObject::~QObject() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x5D1D4B5: QQuickItem::~QQuickItem() (qquickitem.cpp:2064) ==15748== by 0x5D34655: QQmlPrivate::QQmlElement<QQuickLoader>::~QQmlElement() (qqmlprivate.h:106) ==15748== by 0x668736B: QObjectPrivate::deleteChildren() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x66900EB: QObject::~QObject() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x5D1D4B5: QQuickItem::~QQuickItem() (qquickitem.cpp:2064) ==15748== by 0x5D33AE5: QQmlPrivate::QQmlElement<QQuickItem>::~QQmlElement() (qqmlprivate.h:106) ==15748== by 0x668736B: QObjectPrivate::deleteChildren() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x66900EB: QObject::~QObject() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x5D1D4B5: QQuickItem::~QQuickItem() (qquickitem.cpp:2064) ==15748== by 0x5D348A5: QQmlPrivate::QQmlElement<QQuickFocusScope>::~QQmlElement() (qqmlprivate.h:106) ==15748== by 0x668736B: QObjectPrivate::deleteChildren() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x66900EB: QObject::~QObject() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x5D1D4B5: QQuickItem::~QQuickItem() (qquickitem.cpp:2064) ==15748== by 0x5D34655: QQmlPrivate::QQmlElement<QQuickLoader>::~QQmlElement() (qqmlprivate.h:106) ==15748== by 0x668736B: QObjectPrivate::deleteChildren() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x66900EB: QObject::~QObject() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x5D1D4B5: QQuickItem::~QQuickItem() (qquickitem.cpp:2064) ==15748== by 0x5D33AE5: QQmlPrivate::QQmlElement<QQuickItem>::~QQmlElement() (qqmlprivate.h:106) ==15748== by 0x6689607: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x5D1B012: QQuickItem::event(QEvent*) (qquickitem.cpp:7114) ==15748== by 0x6659CDC: QCoreApplication::notify(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x66599D4: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x665B826: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x66B1242: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x8EE2E43: g_main_context_dispatch (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0) ==15748== by 0x8EE3087: g_main_context_iterate.isra.24 (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0) ==15748== by 0x8EE312B: g_main_context_iteration (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0) ==15748== by 0x66B06BB: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x66578EA: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x665EF45: QCoreApplication::exec() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x40711B: startShell(int, char const**, void*) (main.cpp:171) ==15748== by 0x407A74: main (main.cpp:227) ==15748== Address 0x1be83870 is 64 bytes inside a block of size 112 free'd ==15748== at 0x4C2C2BC: operator delete(void*) (vg_replace_malloc.c:503) ==15748== by 0x5815FB0: QQmlObjectCreator::~QQmlObjectCreator() (qqmlobjectcreator.cpp:156) ==15748== by 0x57A52AA: QQmlIncubatorPrivate::clear() (qscopedpointer.h:62) ==15748== by 0x57A53C6: QQmlIncubator::clear() (qqmlincubator.cpp:577) ==15748== by 0x5DCEA20: QQuickLoader::setActive(bool) (qquickloader.cpp:350) ==15748== by 0x5DCF6D2: QQuickLoader::qt_metacall(QMetaObject::Call, int, void**) (moc_qquickloader_p.cpp:277) ==15748== by 0x579DC66: QQmlPropertyPrivate::write(QObject*, QQmlPropertyData const&, QVariant const&, QQmlContextData*, QFlags<QQmlPropertyPrivate::WriteFlag>) (qqmlproperty.cpp:1322) ==15748== by 0x579E76E: QQmlPropertyPrivate::writeValueProperty(QObject*, QQmlPropertyData const&, QVariant const&, QQmlContextData*, QFlags<QQmlPropertyPrivate::WriteFlag>) (qqmlproperty.cpp:1246) ==15748== by 0x579F2F9: QQmlPropertyPrivate::writeBinding(QObject*, QQmlPropertyData const&, QQmlContextData*, QQmlJavaScriptExpression*, QV4::ValueRef, bool, QFlags<QQmlPropertyPrivate::WriteFlag>) (qqmlproperty.cpp:1578) ==15748== by 0x580CF69: QQmlBinding::update(QFlags<QQmlPropertyPrivate::WriteFlag>) (qqmlbinding.cpp:266) ==15748== by 0x580D5BD: QQmlBinding::expressionChanged(QQmlJavaScriptExpression*) (qqmlbinding_p.h:105) ==15748== by 0x57E6156: QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) (qqmlnotifier.cpp:81) ==15748== by 0x57E6130: QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) (qqmlnotifier.cpp:76) ==15748== by 0x57E6130: QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) (qqmlnotifier.cpp:76) ==15748== by 0x5788FA3: QQmlData::signalEmitted(QAbstractDeclarativeData*, QObject*, int, void**) (qqmlengine.cpp:721) ==15748== by 0x6688232: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x57882A7: QQmlData::destroyed(QObject*) (qqmlengine.cpp:1658) ==15748== by 0x668FD7D: QObject::~QObject() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x55E8B64: QQmlDMAbstractItemModelData::~QQmlDMAbstractItemModelData() (qqmladaptormodel.cpp:95) ==15748== by 0x58643DC: QQmlDelegateModelPrivate::release(QObject*) (qqmldelegatemodel.cpp:520) ==15748== by 0x586440C: QQmlDelegateModel::release(QObject*) (qqmldelegatemodel.cpp:536) ==15748== by 0x5DFED4F: QQuickItemViewPrivate::releaseItem(FxViewItem*) (qquickitemview.cpp:2349) ==15748== by 0x5DBAB94: QQuickGridViewPrivate::addVisibleItems(double, double, double, double, bool) (qquickgridview.cpp:497) ==15748== by 0x5DFC94E: QQuickItemViewPrivate::refill(double, double) (qquickitemview.cpp:1751) ==15748== by 0x5DFF26A: QQuickItemViewPrivate::layout() (qquickitemview.cpp:1859) ==15748== by 0x5D275F7: QQuickWindowPrivate::polishItems() (qquickwindow.cpp:271) ==15748== by 0x5D02B7D: QSGThreadedRenderLoop::polishAndSync(QSGThreadedRenderLoop::Window*) (qsgthreadedrenderloop.cpp:1150) ==15748== by 0x5D03167: QSGThreadedRenderLoop::event(QEvent*) (qsgthreadedrenderloop.cpp:1235) ==15748== by 0x6659CDC: QCoreApplication::notify(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x66599D4: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x66B00CC: QTimerInfoList::activateTimers() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x66B03F0: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x8EE2E43: g_main_context_dispatch (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0) ==15748== by 0x8EE3087: g_main_context_iterate.isra.24 (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0) ==15748== by 0x8EE312B: g_main_context_iteration (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0) ==15748== by 0x66B06BB: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x66578EA: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x665EF45: QCoreApplication::exec() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==15748== by 0x40711B: startShell(int, char const**, void*) (main.cpp:171) ==15748== by 0x407A74: main (main.cpp:227) Change-Id: I2c7d38fa5a2566520173bff7ad4e5f9c966d083e Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| * | Initialize velocityAlbert Astals Cid2014-06-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Fixes valgrind warning ==21054== Conditional jump or move depends on uninitialised value(s) ==21054== at 0x5DAE6D4: QQuickListView::viewportMoved(QFlags<Qt::Orientation>) (qquicklistview.cpp:2789) ==21054== by 0x5D9ED76: QQuickFlickablePrivate::itemGeometryChanged(QQuickItem*, QRectF const&, QRectF const&) (qquickflickable.cpp:296) ==21054== by 0x5DFC438: QQuickItemViewPrivate::itemGeometryChanged(QQuickItem*, QRectF const&, QRectF const&) (qquickitemview.cpp:1158) ==21054== by 0x5DAC6A2: QQuickListViewPrivate::itemGeometryChanged(QQuickItem*, QRectF const&, QRectF const&) (qquicklistview.cpp:1369) ==21054== by 0x5D0D5F2: QQuickItem::geometryChanged(QRectF const&, QRectF const&) (qquickitem.cpp:3365) ==21054== by 0x5D11822: QQuickItem::setY(double) (qquickitem.cpp:5858) ==21054== by 0x5C84FED: QQuickTimeLinePrivate::advance(int) (qquicktimeline.cpp:826) ==21054== by 0x5C85155: QQuickTimeLine::updateCurrentTime(int) (qquicktimeline.cpp:702) ==21054== by 0x58576FA: QAbstractAnimationJob::setCurrentTime(int) (qabstractanimationjob.cpp:497) ==21054== by 0x5857BDD: QQmlAnimationTimer::updateAnimationsTime(long long) (qabstractanimationjob.cpp:119) ==21054== by 0x640C7EC: QUnifiedTimer::updateAnimationTimers(long long) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==21054== by 0x58570C8: QQmlAnimationTimer::startAnimations() (qabstractanimationjob.cpp:152) ==21054== by 0x66895B5: QObject::event(QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==21054== by 0x6659CDC: QCoreApplication::notify(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==21054== by 0x66599D4: QCoreApplication::notifyInternal(QObject*, QEvent*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==21054== by 0x665B826: QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==21054== by 0x66B1242: ??? (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==21054== by 0x8EE2E43: g_main_context_dispatch (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0) ==21054== by 0x8EE3087: g_main_context_iterate.isra.24 (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0) ==21054== by 0x8EE312B: g_main_context_iteration (in /lib/x86_64-linux-gnu/libglib-2.0.so.0.4100.0) ==21054== by 0x66B06BB: QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==21054== by 0x66578EA: QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) ==21054== by 0x665EF45: QCoreApplication::exec() (in /usr/lib/x86_64-linux-gnu/libQt5Core.so.5.3.0) Change-Id: I72e101140b8bee0b6867cf92902e70660c8d21ab Reviewed-by: Martin Jones <martin.jones@jollamobile.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
| * | Fix QQmlComponent detailed description.Mitch Curtis2014-06-201-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | setParent() => setParentItem() Task-number: QTBUG-39687 Change-Id: I67dc871a6d3b10af321d1f7b08921dcad0a6f19d Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
| * | Fix crash in QObjectWrapperOleg Shparber2014-06-191-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This can happen during QObject destruction, when QObjectPrivate::deleteChildren() itself sets entries in the children list to zero when deleting. These zeros cause crash in markChildQObjectsRecursively(). Task-number: QTBUG-38635 Change-Id: I29ad9e793b78ca4e8d73fbb125f46db1b8292f20 Reviewed-by: Alan Alpert <aalpert@blackberry.com>
| * | Merge remote-tracking branch 'origin/stable' into 5.3Sergio Ahumada2014-06-141-0/+8
| |\| | | | | | | | | | Change-Id: Id783915b0139a90ecfb99f8298b1ff5cf506a1dd
| | * Fix Stmt:Data object leakLiang Jian2014-06-131-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | call Stmt::destroyData() whenever a Stmt object is to be removed in BasicBlock to delete the Stmt::Data object hold in the Stmt object. Change-Id: I59c939d79b935153e6f8613e54f149120f5198f5 Reviewed-by: Lars Knoll <lars.knoll@digia.com> Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
* | | Remove redundant sse2 math flagsAllan Sandfeld Jensen2014-07-011-7/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | Qtbase already enables sse2 math by default now. This version is no longer needed and may actually hurt performance by triggering scheduling for pentium4. Change-Id: Ib3b6781fb0b92c1351344cc2d2f13101fa2b632b Reviewed-by: Thiago Macieira <thiago.macieira@intel.com>
* | | Add grabFramebuffer() to QQuickWidget and use it in the autotestLaszlo Agocs2014-07-013-0/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This introduces the need for a grab function in QQuickWidget. The render control has one already so there is no reason for not exposing this in QQuickWidget too. This also means that a relatively meaningful autotest can be now be added. [ChangeLog][QtQuick] Added QQuickWidget::grabFramebuffer() for capturing the content into a QImage. Task-number: QTBUG-37589 Change-Id: I5ca8192c0ef8dab4f076a4db27b64aebe3359bb8 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | | Docs: clarify the relation between default alpha and format.Laszlo Agocs2014-07-011-64/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Reformat the new API docs the get rid of the unnecessary stars. And fix some typos. Change-Id: I09dcb3bea55cfd7b9209a4e0ad43e28a47fd1fa4 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
* | | Use categorized logging for all things scenegraph.Gunnar Sletta2014-07-0111-332/+261
| | | | | | | | | | | | | | | Change-Id: I865ee838b0fd6c257b7189f24130012b98206fd1 Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | | Avoid deadlock during window hiding.Gunnar Sletta2014-07-011-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because we do event processing in polishAndSync, hide() or handleObscurity() might have been called by the time we continue execution. We already handled that windowDestroyed() was called. Change-Id: If45bcf3fa18cef1a60ca31bc26d3830045f581d9 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | | QQuickApplication: do not filter LayoutDirectionChange eventsJ-P Nurmi2014-06-252-35/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The newly introduced QGuiApplication::layoutDirectionChanged() is much cheaper to use than filtering events of the application object. Change-Id: I356c94cc6bea806bf3644c31c2610501d90f6c35 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com> Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com> Reviewed-by: Alan Alpert <aalpert@blackberry.com>
* | | Allow integer values to be assigned QList<qreal> propertiesOleg Shparber2014-06-252-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | Before this patch it was not possible to assign an integer value to QList<qreal> property, while it worked for non-list properties. Change-Id: Iab00288f7d78f4f76056ab4291700d7f51626de4 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | | Warn at runtime about badly threaded calls to QQuickItem::update()Gunnar Sletta2014-06-251-3/+5
| | | | | | | | | | | | | | | Change-Id: Ia3fc01f11ff28441d4ef095b520297a73e3399d6 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | | Fix crash in QQmlDelegateModel during destruction phaseSimon Hausmann2014-06-242-6/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It has been reported multiple times (with different back traces) that the QQmlDelegateModel tries to access a dangling QQmlContext pointer. The scenarios for reaching this point differ slightly, one such scenario is very late model activity during the scene destruction. The provided test-case simulates that and the provided patch guards the QQmlContext in a QPointer. Task-number: QTBUG-39780 Change-Id: I594ee4918cd1b78c5db5c164314e85e9eea99fbd Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
* | | Exclude private methods and QObject::deleteLater from enumerable propertiesSimon Hausmann2014-06-241-2/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a regression from Qt 5.1/5.0 introduced with 5.2. Private slots/methods such as QObject::_q_reRegisterTimers() as well as QObject::deleteLater() are not suitable for calls from JavaScript. deleteLater() in particular is covered by the destroy() replacement slot. Task-number: QTBUG-39744 Change-Id: I9b25f3c0d4095ba8e2e8e5ee47e37903b5def1f9 Reviewed-by: Michael Brasser <michael.brasser@live.com>
* | | Make QQuickRenderControl publicLaszlo Agocs2014-06-248-154/+313
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | QQuickRenderControl allows rendering Qt Quick 2 scenes into framebuffer objects which can then be used in arbitrary ways in Qt-based or 3rd party OpenGL renderers. [ChangeLog][QtQuick] Introduced QQuickRenderControl as a public API. Task-number: QTBUG-37944 Change-Id: I84262243b261b35cefdf67ec6bba8127a0f29275 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>
* | | V4 JIT: add IR printer that uses platform register names.Erik Verbruggen2014-06-243-3/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | After running register allocation, the IR is printed one last time (when the environment variable QV4_SHOW_IR is set). This will now use the platform defined register names, e.g. "ebx" or "d2". Change-Id: I2f2f4536d1de940a69690056e5165d38fa7910bb Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | QQuickApplication: do not filter ApplicationActive/Inactive eventsJ-P Nurmi2014-06-231-19/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | Listening to QGuiApplication::applicationStateChanged() is enough, no need to do expensive event filtering for listening to application state changes. Change-Id: Iba71bc8cefec236f2f7e2e25c57c5c6b9c9fb1ea Reviewed-by: Shawn Rutledge <shawn.rutledge@digia.com>
* | | Make sure program is bound before calling initialize().Gunnar Sletta2014-06-231-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some implementations will use the initialization to set constant uniforms like texture locations, so bind the program before so this will work. Task-number: QTBUG-39472 Change-Id: I677c5aeefe68535bd4805e83b93308d0bd090030 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
* | | V4 JIT: add some documentation and literature references.Erik Verbruggen2014-06-193-0/+33
| | | | | | | | | | | | | | | Change-Id: I67667b74672b94b951361bf2a446476edf44b826 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | V4 JIT: add hint for phi-node operands.Erik Verbruggen2014-06-191-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Not only is it preferable for the target of a phi-node to be stored in the same location as one of the sources, but the same yields for the sources. For example, in a loop, it is preferable to store the result of a value used in a phi-node in the loop header to be stored in the same location as that phi-node's target. Doing that will eliminate extra moves that are generated to resolve differences between edges. Change-Id: I0cb5fbe8915d602ac9b9a2a7e8b95cf47b1efb68 Reviewed-by: Lars Knoll <lars.knoll@digia.com>
* | | Fix compiler warningLars Knoll2014-06-181-1/+2
| | | | | | | | | | | | | | | Change-Id: I26df4f1b8417c6b075d81eaf118669a4103503e2 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | | Use the correct 'no-widgets' checkGunnar Sletta2014-06-181-1/+1
| | | | | | | | | | | | | | | Change-Id: I754f785625a534886c6c40f1e850b90cf2418297 Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
* | | V4 JIT: teach regalloc about callee-saved registers.Erik Verbruggen2014-06-172-9/+26
| | | | | | | | | | | | | | | | | | | | | | | | Callee-saved registers won't get clobbered by a call, so any value stored in it will survive the call. Change-Id: I2b61b84617b01bf7ce7e81cd0119a6da689ee9d5 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
* | | Merge "Merge remote-tracking branch 'origin/5.3' into dev" into refs/staging/devSergio Ahumada2014-06-1719-91/+134
|\ \ \
| * | | Merge remote-tracking branch 'origin/5.3' into devSimon Hausmann2014-06-1319-91/+134
| |\| | | | | | | | | | | | | | | | | | | | | | | | | | Conflicts: src/quickwidgets/qquickwidget.cpp Change-Id: Id4b080aea713df68608847bb82570231e37ce536
| | * | Merge remote-tracking branch 'origin/stable' into 5.3Simon Hausmann2014-06-131-1/+7
| | |\| | | | | | | | | | | | | Change-Id: I9cff3f4d42d58157fd8d17ec172b6a74dc386508
| | | * Fix EllipseShape for Affectors in QtQuick.ParticleDaniel Oberländer2014-06-121-1/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | EllipseShape was theated like rectangles if set as shape in an Affector due to an unimplemented containment check (was marked as TODO in source code). This fix implements the missing check. Change-Id: I8df1406f147c56e799531fccf4963110c9fdd8ef Reviewed-by: Alan Alpert (Personal) <416365416c@gmail.com>
| | * | Set StrongFocus on QQuickWidgetLaszlo Agocs2014-06-131-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make text input functional out of the box. Both QGraphicsView and QDeclarativeView (QQuick1) do this so there is no reason to do this differently for QQuickWidget. For QQuickWindow and QQuickView the issue does not exist in the first place, they will accept the focus by default. Task-number: QTBUG-39605 Change-Id: I74f01b85342df51aa3c0e80baf58ba1619c63438 Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
| | * | Doc: Clarify where JavaScript fits in QML codeSze Howe Koh2014-06-132-47/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Rewrite the introductory list. - Rewrite the section about application startup code. - Flatten sections. Previously, there were two \section1 headings: "JavaScript Expressions in QML Objects" and "Running JavaScript at Startup". This split wasn't very natural, as startup code needs to be called from an object, while imported JS files aren't in objects. - Some minor formatting/wording changes in unrelated areas. Change-Id: Ie08f94e2ea77ca84f80491c782bc30612f7ef698 Reviewed-by: Topi Reiniö <topi.reinio@digia.com> Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| | * | Initialize QSGPaintedNode with an empty size.Gunnar Sletta2014-06-121-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Failing to do so would cause it to not update its size when set to 1x1 which in turn would cause it to never update its texture, causing crashes later during rendering. Task-number: QTBUG-39555 Change-Id: I099d9ef2d6968ece21f7c03819abfd6685bec430 Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
| | * | Add node description to painted items.Gunnar Sletta2014-06-121-0/+4
| | | | | | | | | | | | | | | | | | | | Change-Id: I47ad9df1550649131ac5379acbf7d133088c60a8 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
| | * | Make sure shader rewriter stops immediately on an empty string.Gunnar Sletta2014-06-121-3/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The 'invalid' token didn't really serve a purpose. If a string contains 0 for any reason, it one has reached the end. Task-number: QTBUG-39505 Change-Id: I3fc9b8f28dc223386a72bbfa28f70fcca0fde223 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
| | * | Fix forwarding of keyboard events to multiple target itemsJoni Poikelin2014-06-111-0/+2
| | |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | Fix regression when multiple items are set to Keys.forwardTo attached property. QML items accept key events automatically and event should be by default in accepted state when entering handler. Task-number: QTBUG-39168 Change-Id: Ibf6c163c4059269996113634efa48ad2fe4d838d Reviewed-by: J-P Nurmi <jpnurmi@digia.com>
| | * Drag&Drop support for child items in QQuickWidgetPaul Olav Tvete2014-06-101-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | This is a quick-fix. The real issue is that QWidget and QWindow reacts differently when a QDragEnterEvent is rejected. Change-Id: I3e3e50610c14acfaada9c1b243b88cfe9eae54b2 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
| | * Stop polish-and-sync timer when the window is destroyedLaszlo Agocs2014-06-101-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The threaded render loop continues to run the polish-and-sync timer for ever in case the QQuickWindow is destroyed while the timer is active. Instead of pumping the timer events on the render thread for ever, the timer has to be killed somewhere. Change-Id: I8e458624e26ebfacb6cc69a4f2fbb3da57ae5e0e Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
| | * add missing signal declaration in Exposing Attributes to QML exampleShawn Rutledge2014-06-101-0/+2
| | | | | | | | | | | | | | | | | | Task-number: QTBUG-33985 Change-Id: Id6a2a51467ee5de44bf51fb48e3f9346a832f8f2 Reviewed-by: Jerome Pasion <jerome.pasion@digia.com>
| | * Add support for multisampling in QQuickWidgetLaszlo Agocs2014-06-062-5/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use a multisampled fbo when the requested format has samples > 0. Resolving happens after each rendering of the scene. The blit to the temporary non-multisampled fbo could be avoided, in theory, by sending the fbo instead of the texture id down the stack and performing a blit directly to fbo #0. This however involves a number of potential issues, for example due to the non-sharability of FBOs between contexts. Hence it is left as a future exercise. Task-number: QTBUG-39187 Change-Id: Iae98b969bcbc3bb57e6d73288496f5428913c826 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com> Reviewed-by: Gunnar Sletta <gunnar.sletta@jollamobile.com>
| | * V4 Yarr JIT: push/pop addressTempRegister.Erik Verbruggen2014-06-051-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change 6572d4e50d73ac60a8974d07de74c27a7f99ebef moved the addressTempRegister from r3 to r10, so that calculated calls would not overwrite the fourth argument of a call. However, JSC's Yarr JIT might also use it for certain loads, so it also needs to save r10. Task-number: QTBUG-39289 Change-Id: I0a4e725b6b11ab5e772330662049668bed009c05 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
| | * Fix opacity issue in the renderer.Gunnar Sletta2014-06-051-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Given the following tree: OpacityNode | TransformNode (which is a batch root) | GeometryNode If both opacity and transform nodes were changed this frame, we would hit the optimized "scrolling" path while traversing the tree and abort updating that subtree. As a result the opacity change was not propegated to the geometry node and it would be rendered incorrectly. Fix this by skipping the optimized path when there are opacity changes in an ancestor. Task-number: QTBUG-39190 Change-Id: Ieaebfe3de62b961204bd3103fe9913d60e75e412 Reviewed-by: Laszlo Agocs <laszlo.agocs@digia.com>
| | * Fix QQuickWidget offscreen surface format and creation orderLaszlo Agocs2014-06-052-16/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Create the QOffscreenSurface together with, and after, the QOpenGLContext. This is essential to get a surface that is compatible with the context and is in line with the QOffscreenSurface usage recommendation from the docs. Otherwise, if the offscreen surface gets created first, without knowing what _actual_ format (e.g. EGL configuration) the context will use, the result is an incompatible surface and context on systems that offer a different set of configurations for window and pbuffer surfaces. This fixes QQuickWidget on EGL implementations that offer both 16 and 24 bit pbuffer configs, but only 24 (or 32) bit window configs. Task-number: QTBUG-39474 Change-Id: I43925d2b25e28d26d172ce9d22651c25b281b832 Reviewed-by: Paul Olav Tvete <paul.tvete@digia.com>