diff options
Diffstat (limited to 'src/graphicsitems/qximage.cpp')
-rw-r--r-- | src/graphicsitems/qximage.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/graphicsitems/qximage.cpp b/src/graphicsitems/qximage.cpp index 03ea51e..9366bf0 100644 --- a/src/graphicsitems/qximage.cpp +++ b/src/graphicsitems/qximage.cpp @@ -61,6 +61,7 @@ QxImage::~QxImage() { Q_D(QxImage); delete d->node; + delete d->texture; } QPixmap QxImage::pixmap() const @@ -193,9 +194,14 @@ void QxImagePrivate::update() } if (!node) { - node = qt_adaptation_layer()->createPixmapNode(); - node->setPixmap(pix); + node = qt_adaptation_layer()->createTextureNode(); } + + if (!texture) { + texture = qt_adaptation_layer()->textureManager()->requestUploadedTexture(pix.pixmap().toImage(), + TextureManager::SynchronousUploadHint); + } + node->setRect(targetRect); node->setSourceRect(sourceRect); node->setOpacity(renderOpacity); @@ -232,6 +238,8 @@ void QxImage::pixmapChange() setImplicitWidth(d->pix.width()); setImplicitHeight(d->pix.height()); d->status = d->pix.isNull() ? QxImageBase::Null : QxImageBase::Ready; + delete d->texture; + d->texture = 0; d->pixmapDirty = true; d->update(); emit pixmapChanged(); |