diff options
author | Jocelyn Turcotte <jocelyn.turcotte@digia.com> | 2013-11-11 13:03:34 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-11-15 13:49:20 +0100 |
commit | f5be472e0ba4aa19d0c0f91a848dfa5be9ebaa3b (patch) | |
tree | 5149f8bebca3b5ec1a610def1f991fff7f3453a4 /tests/auto/quick/qquickwebviewgraphics | |
parent | 388b272d32bca3c9e46d571a7a4a94bbbc2b11dc (diff) |
Delegated renderer: Fix remaining synchronization issues.
This fixes two issues:
- The onFrameSwapped slot was connected with a QueuedConnection, this
means that any previous frame triggered by Qt could be queued right
before updatePaintNode is called, and be handled right after, thus
picking our m_pendingAckFrameData and sending the Ack before this
frame was actually swapped.
- For cases where Qt triggers a new frame (e.g. typing text in a
QtQuick text area) it would be possible that it starts rendering
before m_pendingUpdateFrameData had been set, which would render
the old frame while Chromium might be in the middle of rendering
the new one on the same resources, or destroying them.
The solution is grossly to do proper used resource reporting to the
child compositors via cc::CompositorFrameAck::resources.
We previously released all resources on every frame, and Chromium
would resend back to us the ones that could be reused without change.
We now instead only return unused resources, but this also means that
we have to keep track of used resources ourselves.
cc::DelegatedFrameData::resource_list only contain new resources to
be added to the scene and we keep a deep copy of the
cc::TransferableResource into our MailboxTextures.
A few other changes that come with this:
- A few null-checks can now be removed since we can better rely on
the integrity of the information passed through DelegatedFrameData.
- Since we can now prevent used resources from being destroyed while
we use them, trigger a frame Ack immediately after updatePaintNode
instead of waiting until the buffer is swapped, like ui::Compositor
does.
- MailboxTexture is now more autonomous, but still require some
information from quads. Mark them as not containing alpha by default
and fetch this information from quads when encountered.
Change-Id: Ice235f3a98a179c87eec7fbcb9880e34b0ed1e73
Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Diffstat (limited to 'tests/auto/quick/qquickwebviewgraphics')
0 files changed, 0 insertions, 0 deletions