| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change starts using the superior implementation of the scene graph
render loop which has been worked on in the scenegraph-playground
project for a while. It uses a far more straightforward locking/sync
paradigm compared to the existing one and is less deadlock and error
prone. It also enables the scene graph thread to run on its own when
the GUI thread is blocked, enabling threaded animations.
This changes also introduces a naming change inside Qt Quick from
"Window Manager" -> "Render Loop" as that fits better to what the
code does.
Change-Id: I1c2170ee04fcbef79660bd7dae6cace647cdb276
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
|
|
|
|
|
|
| |
Change-Id: I6c3bd7bebe3d62d1cfd0fa6334544c9db8398c76
Reviewed-by: Akseli Salovaara <akseli.salovaara@digia.com>
Reviewed-by: Sergio Ahumada <sergio.ahumada@digia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
qml/qml/qqmlimport.cpp:982:30: error: unused parameter 'errors' [-Werror=unused-parameter]
quick/util/qquickanimationcontroller.cpp:66:6: error: unused parameter 'job' [-Werror=unused-parameter]'
quick/items/qquickshadereffectnode.cpp:160:17: error: case value '38' not in enumerated type 'QVariant::Type' [-Werror=switch]
quick/items/qquickwindowmanager.cpp:286:60: error: 'renderTime' may be used uninitialized in this function [-Werror=maybe-uninitialized]
quick/items/qquickitem.cpp:5267:67: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
and a few more repeated from the above
Change-Id: Id1950c6ba98f7f8475975716b21bd795ecb4bd20
Reviewed-by: Alan Alpert <aalpert@rim.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Without threaded rendering QML 2 often ends up running at half the
screen refresh rate on X11. Not having BufferQueuingOpenGL shouldn't
prevent us from using threaded rendering, since the issue of four
animating windows running at 1/4th of the screen refresh rate will
happen regardless of whether rendering happens on the main thread or in
a separate rendering thread.
Change-Id: I0edc818e6d762fa1faf13e7f2f47dfda132b6fdf
Reviewed-by: Friedemann Kleint <Friedemann.Kleint@digia.com>
|
|
|
|
|
|
|
|
|
| |
As they also triggers when a non-existing file is loaded into QML2
or windows have invalid sizes.
Change-Id: Iab1ce6c99f2bc2cb360ddaccce539cb97979ad5a
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Reviewed-by: Christiaan Janssen <christiaan.janssen@digia.com>
|
|
|
|
|
|
|
|
|
| |
DesignerWindowManager implements a render path just for
Qt Quick Designer, which is single threaded and does not
open visible windows.
Change-Id: I02b0d1b819a7a5391b9bb14ee6efa1a32e0c8ad7
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
|
|
|
|
|
|
|
|
|
|
|
| |
To make QQuickWindowPrivate::setRenderWithoutShowing more useful
for autotesting we can allow grabbing such windows. This is safe
if the platform window have been created and the window has a valid
size.
Change-Id: I8b9a2aaeb93935f662b75ef29651730b890441d5
Reviewed-by: Samuel Rødal <samuel.rodal@digia.com>
Reviewed-by: Jocelyn Turcotte <jocelyn.turcotte@digia.com>
|
|
|
|
|
|
|
| |
Change copyrights and license headers from Nokia to Digia
Change-Id: Ie7f5d49ed8235d7a7845ab68f99ad1c220e64d5c
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
|
|
|
|
|
|
|
|
| |
The sync time was not taken into account
Change-Id: I3d8adb637572c72438e20729a80513850a80d17e
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Alan Alpert <416365416c@gmail.com>
|
|
|
|
|
|
|
|
|
| |
This is quite useful to see how much time the rest of the app takes.
The same information has been available in QtQuick1.
Change-Id: I31ae91bfa764a4d8013af80de9459514ed72314f
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
| |
Change-Id: Ia3958c7c26bf2fd9dd72a07fc6f5ff3a28b0a349
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
|
|
|
|
|
|
|
|
|
|
| |
Tie incubation directly to wether animations are running
or not. When animations are running, we incubate for
a third of a frame only. When animations are not running
we incubate whatever is left as the scene is anyway idle.
Change-Id: I88c9248e9d7b3b35c99fca52aeb9c681d1b4a306
Reviewed-by: Martin Jones <martin.jones@nokia.com>
|
|
|
|
|
| |
Change-Id: I90364c3e96e5bcbff84d8da574af5695a0fd7993
Reviewed-by: Glenn Watson <glenn.watson@nokia.com>
|
|
|
|
|
|
| |
Change-Id: I599ec0347a55422a3c85c89e0f6817b7f2d1343e
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Reviewed-by: Chris Adams <christopher.adams@nokia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QQuickCanvas is now called QQuickWindow
QQuickCanvas::rootItem is now QQuickWindow::contentItem
QQuickItem::canvas is now QQuickItem::window
QQuickItem::ItemChangeData::canvas is also renamed window
QQuickCanvas::grabFrameBuffer is now QQuickWindow::grabWindow
The functions related to the color property have dropped the clear from
their names.
The first three changes have interim compatibility measures in place to
ease the transition.
Change-Id: Id34e29546a22a74a7ae2ad90ee3a8def6fc541d2
Reviewed-by: Martin Jones <martin.jones@nokia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
At app startup there is often a delay between setting
a window visible and the window being exposed by the
window manager.
Add check to canvas->isExposed() before calling
swapbuffers.
Change-Id: I5e588ab334a72c4fe817da44eff4c3dc785d6b1f
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On Mac OS X and other systems with buffer queueing GL,
we have very jerky animations as the pipeline
does not block at regular intervals, causing the
current-time based animations to come out very jerky
despite us rendering at 60 FPS with a very good margin.
To remedy this, we switch the default so that we by default
advance with a fixed increment, making the uneven frames
not a problem. This then comes at the cost of that animations
will slow down if the application does not manage to render
within 16 ms, but this is an acceptible compromise. Aka,
now it will occationally look bad, as opposed to always bad
which it currently does.
Change-Id: I44a6c3e51f434e4235e49485182380ea531876d9
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
|
|
|
|
|
|
|
| |
BufferQueuedOpenGL doesn't necessarily imply threading support.
Change-Id: I4ba8e3b9acfd3eb12bb41aa6b644c852ae5fa1c6
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
We would like to make a distinction between QQuickItem::update()
which triggers updatePaintNode() to synchronize the scene
graph and requesting the toplevel QQuickCanvas to be repainted.
If we have this distinction in place it is possible for the
scene graph to detect that the scene is unchanged and avoid
rendering unless the user has explicitely asked for the
canvas to be repainted, which is often the case when hooking
into QQuickCanvas::beforeRender().
Change-Id: Ibe77f58423593deb217ef9f8082fa12009f45daf
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
|
|
|
|
|
|
|
| |
Update when we get an expose event, like the trivial renderer does.
Change-Id: Ib95559da35b94d84c0935c6abb24fdfb1e05fa1c
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
|
|
|
|
|
|
|
|
|
|
| |
We need to have updatePending set otherwise there will be no
swapBuffers() which looks quite bad when minimizing and restoring a
window on xcb for instance. (we end up with having no window content
shown until there is a proper update triggered for whatever reason)
Change-Id: Ia58bbe92dbb7fb7e184828dc9ffbf0ddce0131e1
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
|
|
|
|
|
|
|
|
|
|
|
| |
On a 120 Hz display for example, the threaded renderer makes the
animations go from rubber to velvet.
Change-Id: I28175b4a063dbf5d92ec128797e811c90891b3d5
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
Reviewed-by: Girish Ramakrishnan <girish.1.ramakrishnan@nokia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Reviewed-by: Donald Carr <donald.carr@nokia.com>
|
|
|
|
|
|
|
|
|
| |
qtbase change 36547f4eff44361f7a6acd0cff107c0e47561f93
renamed qpa headers.
Change-Id: I903b48d145837557d305366e2eb4eedd0ad32c14
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
|
|
|
|
|
|
|
|
| |
Prevents warnings about swapBuffers() being called with non-exposed
window on xcb.
Change-Id: Ib43fd588a7b62e7aaf14f2caddfa498fdced283a
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
|
|
|
|
|
|
|
|
| |
Use QWindow::isVisible() instead.
Change-Id: I7dcd70e69a070d66f97f300cc292c1bfc51cf09c
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
It is cruicial that the sync handshake between GUI and render
does not get interrupted. If it does, the sync will happen with
the GUI unlocked which leads to crashes. When the sync event
comes through to the GUI afterwards the GUI will block waiting
while the renderer is most likely already done with the sync,
causing GUI to wait indefinitely.
Change-Id: I00bf0c36088510609a9e6f4d0649b9aaeefcd241
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
|
|
|
|
|
|
|
|
|
|
| |
- QString from ASCII conversions
- Unused variables
- Pointer mismatches
Change-Id: I5f76dce4f2ba481c2c2bce8681cf8107bd629566
Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com>
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
|
|
|
|
|
|
|
|
|
| |
1. Change isExternalUpdatePending to true to avoid window manager sleep again immediately
without processing any events
2. Also wake up the window manager if wait at posting sync event
Change-Id: I184dba32a66379b688b585c27c4d01799c233e84
Reviewed-by: Martin Jones <martin.jones@nokia.com>
|
|
|
|
|
|
|
|
| |
In some cases QSGContext::invalidate() was called without any current
GL context when the render thread was terminated.
Change-Id: Ia5295c89fe13f2473115c736e328e386d6d4d183
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
|
|
|
|
|
| |
Change-Id: I3535c57b5d8dd99c8a6cf24ccb1b56af298fcfe6
Reviewed-by: Martin Jones <martin.jones@nokia.com>
|
|
|
|
|
|
|
|
|
|
| |
Also rename paint() to exposureChanged() as that is what the function
actually means. The implementation of paint() has been removed in both
trivial and threaded version as it is superflous as show() already
triggers rendering.
Change-Id: I7e53f42786efaf961921f10a39977de511965d71
Reviewed-by: Jørgen Lind <jorgen.lind@nokia.com>
|
|\
| |
| |
| | |
Change-Id: Iad2f07b989b25349fd2d4fff010e24dcd5a1688f
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The threaded incubator relies on the event loop spinning to signal
item updates. This change ensures that the event loop is processed
while items are being created and that the render loop is woken
if it is sleeping.
Also cancel delegate incubation correctly during destruction.
Change-Id: Ib5bb55c788411490e0959c75933da587fdfd4b8c
Reviewed-by: Yunqiao Yin <charles.yin@nokia.com>
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This was based on the assumption that exposure and visibility
would take similar code paths, but this is not the case and
the fallout of this change (like not releasing resources at all)
is not worth it.
This reverts ef6318ae38322b5a4a0619b581924290f114fa74 and most
of 5f0013ee76605b9c7ceab168702b57e797b698e0
Change-Id: Ib2e29972502a8ec956cd6bd294a2a2bb50d8e76e
Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
|
|/
|
|
|
|
|
|
|
|
|
|
|
| |
Symbols beginning with QDeclarative are already exported
by the quick1 module.
Users can apply the bin/rename-qtdeclarative-symbols.sh
script to modify client code using the previous names of the
renamed symbols.
Task-number: QTBUG-23737
Change-Id: Ifaa482663767634931e8711a8e9bf6e404859e66
Reviewed-by: Martin Jones <martin.jones@nokia.com>
|
|
|
|
|
| |
Change-Id: I7758f5ba1f58e19d92e394133cccd449ce5a1756
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
|
|
|
|
|
|
|
| |
Fix compile after 054114a459580b71e170dc6bf356e8943d0ed068 in qtbase.
Change-Id: Ibeea6b4b2e3c5f420446b15edd1df7bf88535dcd
Reviewed-by: Martin Jones <martin.jones@nokia.com>
|
|
|
|
|
|
|
|
| |
This function can be used in certain situations to purge the texture cache
and triggers more lazily to take down the scene graph and GL context
Change-Id: Icd9360ff50fda0e721ba0f1b520cda678e457a35
Reviewed-by: Aaron Kennedy <aaron.kennedy@nokia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QQuickRenderThreadSingleContextWindowManager
The animationRunning value in QQuickRenderThreadSingleContextWindowManager
should always match the animation driver's running state. When the renderer
starts rendering, should check and update the animationRunning to
the current animation driver's isRunning() value after killing the
animation timer.
Change-Id: I30b55872ae1fc69b8db47ead7f1f2ee86de966c8
Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com>
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
|
|
|
|
|
| |
Change-Id: I15b1799982d20d16c9c5e08eee7095cf087b49e1
Reviewed-by: Kim M. Kalland <kim.kalland@nokia.com>
|
|
|
|
|
|
|
|
|
|
| |
As in the past, to avoid rewriting various autotests that contain
line-number information, an extra blank line has been inserted at the
end of the license text to ensure that this commit does not change the
total number of lines in the license header.
Change-Id: If39bd256b0fa85eba17ea30f8ab87ea27d758908
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
|
|
|
|
|
| |
Change-Id: Ife582717b4abc657120b98366fe6e6dc5efc7586
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
|
|
|
|
|
|
|
|
| |
Replace Nokia contact email address with Qt Project website.
Change-Id: I6a730abc0c396fb545a48b2d6938abedac2e3f1c
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
Reviewed-by: Alan Alpert <alan.alpert@nokia.com>
|
|
|
|
|
|
|
|
| |
Update copyright headers from before 2011, and a couple of new ones that
were merged after the previous change to copyright headers.
Change-Id: Ia76e08e2734afa4ef3f1207dbcda5ff3bc81b366
Reviewed-by: Rohan McGovern <rohan.mcgovern@nokia.com>
|
|
|
|
|
| |
Change-Id: I4841dce8e85df608fd0e38f661301797a3857176
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
maybeUpdate() has an optimization to void locking the Gui thread
on every QQuickItem::update() call, which was faulty. When the
render thread was done rendering the flag should have been reset
which would have meant another locked sync between render and GUI.
Solve it slightly differently by posting an event to ourselves in GUI
and resetting the state once the event is processed. This batches all
update calls made until the GUI thread returns to the event loop, aka
all animation updates, all responds to one touch event, etc.
The isExternalUpdatePending variable, written from maybeUpdate, was
accumulated per canvas, but is used per render thread only, so this
change simplifies the variable to be per render thread only.
Task-number: QTBUG-23478
Change-Id: I067a9918383e3e05e2feebcc6dfa3163b032eb5b
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
|
|
|
|
|
|
|
| |
This got lost in the window manager rewrite
Change-Id: Ibaed76814ae676ce4ce3f50def196b8d67fd3df0
Reviewed-by: Laszlo Agocs <laszlo.p.agocs@nokia.com>
|
|
|
|
|
|
|
|
|
|
| |
When all views are hidden, we stop the rendering thread,
kill the OpenGL context and all scene graph content.
The entire scenegraph is recreated based on the QML scene
when a view is shown again.
Change-Id: I734619d9f29263a5cdecbcc9b88c3808d1d64a7f
Reviewed-by: Kim M. Kalland <kim.kalland@nokia.com>
|
|
|
|
|
| |
Change-Id: Ie88f21c4e4c53a023f03f906d2fae7540fbc668d
Reviewed-by: Samuel Rødal <samuel.rodal@nokia.com>
|
|
|
|
|
|
|
| |
Mostly introduced by fdd14a1a10a0a2f42015b30071771bd95215cc1a.
Change-Id: Ief4c33412ef80923de2f91e62bb89c18267a14f3
Reviewed-by: Gunnar Sletta <gunnar.sletta@nokia.com>
|