summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJason McDonald <jason.mcdonald@nokia.com>2009-08-25 05:09:18 (GMT)
committerJason McDonald <jason.mcdonald@nokia.com>2009-08-25 05:09:18 (GMT)
commit27768d64786ea97ff825dda2095cb457b50d3c4f (patch)
tree1e60a498c6a938e0c01b8a995f0bc42783b9916d /src
parentfb698edb1e996719c98285c16ed881f42ddfbd77 (diff)
parent48887beb4586eaac81b217dd710c43854f350b25 (diff)
downloadQt-27768d64786ea97ff825dda2095cb457b50d3c4f.zip
Qt-27768d64786ea97ff825dda2095cb457b50d3c4f.tar.gz
Qt-27768d64786ea97ff825dda2095cb457b50d3c4f.tar.bz2
Merge branch '4.6' of git@scm.dev.nokia.troll.no:qt/qt into 4.6
Diffstat (limited to 'src')
-rw-r--r--src/openvg/qpaintengine_vg.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/openvg/qpaintengine_vg.cpp b/src/openvg/qpaintengine_vg.cpp
index 5669f45..d2c7b8b 100644
--- a/src/openvg/qpaintengine_vg.cpp
+++ b/src/openvg/qpaintengine_vg.cpp
@@ -1091,6 +1091,7 @@ VGPaintType QVGPaintEnginePrivate::setBrush
// The brush is a texture specified by a QPixmap/QImage.
QPixmapData *pd = brush.texture().pixmapData();
VGImage vgImg;
+ bool deref = false;
if (pd->pixelType() == QPixmapData::BitmapType) {
// Colorize bitmaps using the brush color and opacity.
QColor color = brush.color();
@@ -1098,15 +1099,21 @@ VGPaintType QVGPaintEnginePrivate::setBrush
color.setAlphaF(color.alphaF() * opacity);
QImage image = colorizeBitmap(*(pd->buffer()), color);
vgImg = toVGImage(image);
+ deref = true;
} else if (opacity == 1.0) {
if (pd->classId() == QPixmapData::OpenVGClass) {
QVGPixmapData *vgpd = static_cast<QVGPixmapData *>(pd);
vgImg = vgpd->toVGImage();
} else {
vgImg = toVGImage(*(pd->buffer()));
+ deref = true;
}
+ } else if (pd->classId() == QPixmapData::OpenVGClass) {
+ QVGPixmapData *vgpd = static_cast<QVGPixmapData *>(pd);
+ vgImg = vgpd->toVGImage(opacity);
} else {
vgImg = toVGImageWithOpacity(*(pd->buffer()), opacity);
+ deref = true;
}
if (vgImg == VG_INVALID_HANDLE)
break;
@@ -1114,7 +1121,8 @@ VGPaintType QVGPaintEnginePrivate::setBrush
vgSetParameteri(paint, VG_PAINT_TYPE, VG_PAINT_TYPE_PATTERN);
vgSetParameteri(paint, VG_PAINT_PATTERN_TILING_MODE, VG_TILE_REPEAT);
vgPaintPattern(paint, vgImg);
- vgDestroyImage(vgImg); // Will stay valid until pattern is destroyed.
+ if (deref)
+ vgDestroyImage(vgImg); // Will be valid until pattern is destroyed.
return VG_PAINT_TYPE_PATTERN;
}