From 7c04a404e5ba63cd9c8bdf1e3c891e796adf2c39 Mon Sep 17 00:00:00 2001 From: Rhys Weatherley Date: Tue, 25 Aug 2009 12:59:14 +1000 Subject: Don't dereference VGImage's that come from QVGPixmapData TexturePattern brushes were sometimes turning all black with OpenVG. This was due to the vgDestroyImage() destroying the cached VGImage in the QVGPixmapData. We only need to use vgDestroyImage() if the QPixmap is not backed up by a QVGPixmapData (bitmaps and pixmaps from other paint engines). Reviewed-by: Sarah Smith --- src/openvg/qpaintengine_vg.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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(pd); vgImg = vgpd->toVGImage(); } else { vgImg = toVGImage(*(pd->buffer())); + deref = true; } + } else if (pd->classId() == QPixmapData::OpenVGClass) { + QVGPixmapData *vgpd = static_cast(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; } -- cgit v0.12 From 48887beb4586eaac81b217dd710c43854f350b25 Mon Sep 17 00:00:00 2001 From: Rohan McGovern Date: Tue, 25 Aug 2009 13:12:28 +1000 Subject: Fixed compile of cetest. Broken in two different ways by the QtScript-JavaScriptCore integration and the S60 integration. Reviewed-by: Michael Goddard --- tools/qtestlib/wince/cetest/bootstrapped.pri | 5 ++++- tools/qtestlib/wince/cetest/cetest.pro | 3 +-- tools/qtestlib/wince/cetest/qmake_include.pri | 4 +++- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/tools/qtestlib/wince/cetest/bootstrapped.pri b/tools/qtestlib/wince/cetest/bootstrapped.pri index 3a0ce24..b9c4b2b 100644 --- a/tools/qtestlib/wince/cetest/bootstrapped.pri +++ b/tools/qtestlib/wince/cetest/bootstrapped.pri @@ -36,4 +36,7 @@ SOURCES += \ $$QT_SOURCE_TREE/src/corelib/tools/qbitarray.cpp \ $$QT_SOURCE_TREE/src/corelib/kernel/qmetatype.cpp \ $$QT_SOURCE_TREE/src/corelib/kernel/qvariant.cpp \ - $$QT_SOURCE_TREE/src/corelib/codecs/qutfcodec.cpp + $$QT_SOURCE_TREE/src/corelib/codecs/qutfcodec.cpp \ + $$QT_SOURCE_TREE/src/corelib/xml/qxmlstream.cpp \ + $$QT_SOURCE_TREE/src/corelib/xml/qxmlutils.cpp + diff --git a/tools/qtestlib/wince/cetest/cetest.pro b/tools/qtestlib/wince/cetest/cetest.pro index a6b79da..5cd52cf 100644 --- a/tools/qtestlib/wince/cetest/cetest.pro +++ b/tools/qtestlib/wince/cetest/cetest.pro @@ -18,9 +18,9 @@ DEFINES += QT_BUILD_QMAKE QT_BOOTSTRAPPED QT_NO_CODECS QT_LITE_UNICODE QT INCLUDEPATH = \ $$QT_SOURCE_TREE/tools/qtestlib/ce/cetest \ $$QT_SOURCE_TREE/qmake \ + $$QT_SOURCE_TREE/qmake/generators/symbian \ $$QT_BUILD_TREE/include \ $$QT_BUILD_TREE/include/QtCore \ - $$QT_BUILD_TREE/include/QtScript \ $$QT_BUILD_TREE/src/corelib/global DEPENDPATH += $$QT_BUILD_TREE/src/corelib/tools $$QT_BUILD_TREE/src/corelib/io @@ -51,4 +51,3 @@ isEmpty(QT_CE_RAPI_INC) { include(qmake_include.pri) include(bootstrapped.pri) -include($$QT_SOURCE_TREE/src/script/script.pri) diff --git a/tools/qtestlib/wince/cetest/qmake_include.pri b/tools/qtestlib/wince/cetest/qmake_include.pri index 3831634..aa32653 100644 --- a/tools/qtestlib/wince/cetest/qmake_include.pri +++ b/tools/qtestlib/wince/cetest/qmake_include.pri @@ -4,4 +4,6 @@ HEADERS += \ SOURCES += \ $$QT_SOURCE_TREE/qmake/option.cpp \ $$QT_SOURCE_TREE/qmake/project.cpp \ - $$QT_SOURCE_TREE/qmake/property.cpp + $$QT_SOURCE_TREE/qmake/property.cpp \ + $$QT_SOURCE_TREE/qmake/generators/symbian/initprojectdeploy_symbian.cpp + -- cgit v0.12