aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick/items/context2d/qquickcontext2dtexture.cpp
diff options
context:
space:
mode:
authorJustin McPherson <justin.mcpherson@nokia.com>2012-03-02 16:28:16 +1000
committerQt by Nokia <qt-info@nokia.com>2012-03-06 06:34:36 +0100
commitfd57a4059a69cdbefda880a62d949994314fa9ed (patch)
tree9a240fa88e2c018693a85e4046e2fff5f7a04d9a /src/quick/items/context2d/qquickcontext2dtexture.cpp
parenteab48686b2ec6df8cd179c9472eda4e8c3505cef (diff)
Continue refactor of Canvas rendering.
- Remove sync() - not necessary - Queue buffer before flush Change-Id: If7dea8e56a612d241c67a82eae265febc45059a8 Reviewed-by: Yunqiao Yin <charles.yin@nokia.com>
Diffstat (limited to 'src/quick/items/context2d/qquickcontext2dtexture.cpp')
-rw-r--r--src/quick/items/context2d/qquickcontext2dtexture.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/quick/items/context2d/qquickcontext2dtexture.cpp b/src/quick/items/context2d/qquickcontext2dtexture.cpp
index 7d9f65a3c6..60f58540f4 100644
--- a/src/quick/items/context2d/qquickcontext2dtexture.cpp
+++ b/src/quick/items/context2d/qquickcontext2dtexture.cpp
@@ -195,13 +195,14 @@ void QQuickContext2DTexture::canvasChanged(const QSize& canvasSize, const QSize&
void QQuickContext2DTexture::paintWithoutTiles()
{
- QLockedCommandBuffer ccb = m_context->buffer();
+ QQuickContext2DCommandBuffer* ccb = m_context->nextBuffer();
- if (ccb->isEmpty())
+ if (!ccb || ccb->isEmpty())
return;
QPaintDevice* device = beginPainting();
if (!device) {
+ delete ccb;
endPainting();
return;
}
@@ -218,6 +219,7 @@ void QQuickContext2DTexture::paintWithoutTiles()
ccb->replay(&p, m_state);
ccb->clear();
+ delete ccb;
endPainting();
@@ -269,7 +271,12 @@ void QQuickContext2DTexture::paint()
if (beginPainting()) {
QQuickContext2D::State oldState = m_state;
- QLockedCommandBuffer ccb = m_context->buffer();
+ QQuickContext2DCommandBuffer* ccb = m_context->nextBuffer();
+ if (!ccb || ccb->isEmpty()) {
+ endPainting();
+ delete ccb;
+ return;
+ }
foreach (QQuickContext2DTile* tile, m_tiles) {
bool dirtyTile = false, dirtyCanvas = false, smooth = false;
@@ -296,6 +303,7 @@ void QQuickContext2DTexture::paint()
compositeTile(tile);
}
ccb->clear();
+ delete ccb;
endPainting();
m_state = oldState;
markDirtyTexture();