HI Gunnar, Thanks for the suggestion, I will use updatePolish(). Also the fix on codereview works.
On Thu, Jun 5, 2014 at 10:43 AM, Gunnar Sletta <gunnar.sle...@jolla.com> wrote: > > On 05 Jun 2014, at 06:45, manish sharma <83.man...@gmail.com> wrote: > > > Hi, > > > > Qt documentation says "The main thread is blocked while this function is > executed so it is safe to read values from the QQuickItem instance and > other objects in the main thread." > > > > Can we only read QQuickItem properties? We can not set it? > > You can, but anything tied to those properties will have their signals > emitted on the render thread which may result in bad stuff. For instance, > if something is bound to that property in QML the signal emission will be > done using a queued connection so the binding will not be evaluated until > later on the GUI thread. That effectively means you get incorrect anchors > and positioners and similar. Not ideal. On the other hand, if you start > timers, as a result of something tied to the setter or its notify signal, > those timers will have affinity to the render thread and be fired there. > That can result in pretty much anything. > > So I would strongly discourage it :) If you need to delay something and do > it "just before rendering", you should use QQuickItem::polish() and > QQuickItem::updatePolish(). > > > I have few QQuickItems and I am trying to set QQuickItem properties > (height/width) from one of the QQuickItem's updatePaintNode function. So > far it worked but when I try QQuickWindow::grabWindow() it asserts both in > windows (QML_FORCE_THREADED_RENDERER=1) and Linux. > > > > ASSERT failure in QQuickItem::update(): "Function can only be called > from GUI thread or during QQuickItem::updatePaintNode()", file > E:\Qt\qt5.2\qt5\qtdeclarative\src\quick\scenegraph\qsgthreadedrenderloop.cpp, > line 988 > > > > I noticed QSGThreadedRenderLoop::m_locked is false. Is it a bug in > QSGThreadedRenderLoop OR we can not set QQuickItem properties inside > updatePaintNode which might cause QQuickItem::update()? > > It is a bug, does https://codereview.qt-project.org/86823 help? > > cheers, > Gunnar > > > > > Regards, > > Manish > > _______________________________________________ > > Interest mailing list > > Interest@qt-project.org > > http://lists.qt-project.org/mailman/listinfo/interest > >
_______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest