aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/quick/items/context2d/qquickcontext2d.cpp5
-rw-r--r--tests/auto/quick/qquickcanvasitem/data/CanvasTestCase.qml5
-rw-r--r--tests/auto/quick/qquickcanvasitem/data/tst_arcto.qml8
-rw-r--r--tests/auto/quick/qquickcanvasitem/data/tst_canvas.qml25
-rw-r--r--tests/auto/quick/qquickcanvasitem/qquickcanvasitem.pro2
-rw-r--r--tests/auto/quick/qquickcanvasitem/tst_qquickcanvasitem.cpp2
6 files changed, 24 insertions, 23 deletions
diff --git a/src/quick/items/context2d/qquickcontext2d.cpp b/src/quick/items/context2d/qquickcontext2d.cpp
index 54cda72a36..14fa07099f 100644
--- a/src/quick/items/context2d/qquickcontext2d.cpp
+++ b/src/quick/items/context2d/qquickcontext2d.cpp
@@ -986,10 +986,11 @@ static QV4::ReturnedValue qt_create_image_data(qreal w, qreal h, QV4::ExecutionE
pixelData->setPrototypeOf(p);
if (image.isNull()) {
- *pixelData->d()->image = QImage(w, h, QImage::Format_ARGB32);
+ *pixelData->d()->image = QImage(qRound(w), qRound(h), QImage::Format_ARGB32);
pixelData->d()->image->fill(0x00000000);
} else {
- Q_ASSERT(image.width()== qRound(w * image.devicePixelRatioF()) && image.height() == qRound(h * image.devicePixelRatioF()));
+ // After qtbase 88e56d0932a3615231adf40d5ae033e742d72c33, the image size can be off by one.
+ Q_ASSERT(qAbs(image.width() - qRound(w * image.devicePixelRatioF())) <= 1 && qAbs(image.height() - qRound(h * image.devicePixelRatioF())) <= 1);
*pixelData->d()->image = image.format() == QImage::Format_ARGB32 ? image : image.convertToFormat(QImage::Format_ARGB32);
}
diff --git a/tests/auto/quick/qquickcanvasitem/data/CanvasTestCase.qml b/tests/auto/quick/qquickcanvasitem/data/CanvasTestCase.qml
index b0fb7fcf8c..5e02ca10d0 100644
--- a/tests/auto/quick/qquickcanvasitem/data/CanvasTestCase.qml
+++ b/tests/auto/quick/qquickcanvasitem/data/CanvasTestCase.qml
@@ -7,6 +7,7 @@ TestCase {
when:windowShown
width:100
height:100
+ visible: true
property Component component:CanvasComponent{}
function cleanupTestCase() {
wait(100) //wait for a short while to make sure no leaked textures
@@ -19,8 +20,8 @@ TestCase {
// { tag:"image cooperative", properties:{width:100, height:100, renderTarget:Canvas.Image, renderStrategy:Canvas.Cooperative}},
{ tag:"image immediate", properties:{width:100, height:100, renderTarget:Canvas.Image, renderStrategy:Canvas.Immediate}},
// { tag:"fbo cooperative", properties:{width:100, height:100, renderTarget:Canvas.FramebufferObject, renderStrategy:Canvas.Cooperative}},
- { tag:"fbo immediate", properties:{width:100, height:100, renderTarget:Canvas.FramebufferObject, renderStrategy:Canvas.Immediate}},
- { tag:"fbo threaded", properties:{width:100, height:100, renderTarget:Canvas.FramebufferObject, renderStrategy:Canvas.Threaded}}
+ { tag:"fbo immediate", properties:{width:100, height:100, renderTarget:Canvas.FramebufferObject, renderStrategy:Canvas.Immediate}}
+// { tag:"fbo threaded", properties:{width:100, height:100, renderTarget:Canvas.FramebufferObject, renderStrategy:Canvas.Threaded}} // QTBUG-82675
];
return [];
}
diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_arcto.qml b/tests/auto/quick/qquickcanvasitem/data/tst_arcto.qml
index d9017150a4..ef1b7a7b2a 100644
--- a/tests/auto/quick/qquickcanvasitem/data/tst_arcto.qml
+++ b/tests/auto/quick/qquickcanvasitem/data/tst_arcto.qml
@@ -357,7 +357,7 @@ CanvasTestCase {
ctx.fillStyle = '#0f0';
ctx.beginPath();
ctx.moveTo(0, 50);
- ctx.translate(100, 0);
+ ctx.translate(50, 0);
ctx.arcTo(50, 50, 50, 0, 50);
ctx.lineTo(-100, 0);
ctx.fill();
@@ -367,11 +367,11 @@ CanvasTestCase {
comparePixel(ctx, 99,0, 0,255,0,255);
comparePixel(ctx, 0,25, 0,255,0,255);
comparePixel(ctx, 50,25, 0,255,0,255);
- comparePixel(ctx, 99,25, 0,255,0,255);
+ comparePixel(ctx, 99,25, 255,0,0,255);
comparePixel(ctx, 0,49, 0,255,0,255);
comparePixel(ctx, 50,49, 0,255,0,255);
- comparePixel(ctx, 99,49, 0,255,0,255);
- }
+ comparePixel(ctx, 99,49, 255,0,0,255);
+ }
function test_zero(row) {
var canvas = createCanvasObject(row);
var ctx = canvas.getContext('2d');
diff --git a/tests/auto/quick/qquickcanvasitem/data/tst_canvas.qml b/tests/auto/quick/qquickcanvasitem/data/tst_canvas.qml
index 8238d87313..d74df3daa7 100644
--- a/tests/auto/quick/qquickcanvasitem/data/tst_canvas.qml
+++ b/tests/auto/quick/qquickcanvasitem/data/tst_canvas.qml
@@ -129,12 +129,12 @@ CanvasTestCase {
tryCompare(c, "availableChangedCount", 1);
c.requestPaint();
- verify(c.save("c.png"));
- c.loadImage("c.png");
- wait(200);
- verify(c.isImageLoaded("c.png"));
- verify(!c.isImageLoading("c.png"));
- verify(!c.isImageError("c.png"));
+ var imagePath = applicationDirPath + "/c.png";
+ verify(c.save(imagePath));
+ c.loadImage(imagePath);
+ tryVerify(function() { return c.isImageLoaded(imagePath) })
+ verify(!c.isImageLoading(imagePath));
+ verify(!c.isImageError(imagePath));
c.destroy();
}
@@ -187,28 +187,28 @@ CanvasTestCase {
tryCompare(c, "availableChangedCount", 1);
//scene graph could be available immediately
//in this case, we force waiting a short while until the init paint finished
- tryCompare(c, "paintedCount", 1);
+ tryCompare(c, "paintedCount", 0);
ctx.fillRect(0, 0, c.width, c.height);
c.toDataURL();
- tryCompare(c, "paintedCount", 2);
+ tryCompare(c, "paintedCount", 1);
tryCompare(c, "paintCount", 1);
// implicit repaint when visible and resized
testCase.visible = true;
c.width += 1;
c.height += 1;
tryCompare(c, "paintCount", 2);
- tryCompare(c, "paintedCount", 2);
+ tryCompare(c, "paintedCount", 1);
// allow explicit repaint even when hidden
testCase.visible = false;
c.requestPaint();
tryCompare(c, "paintCount", 3);
- tryCompare(c, "paintedCount", 2);
+ tryCompare(c, "paintedCount", 1);
// no implicit repaint when resized but hidden
c.width += 1;
c.height += 1;
waitForRendering(c);
compare(c.paintCount, 3);
- tryCompare(c, "paintedCount", 2);
+ tryCompare(c, "paintedCount", 1);
c.destroy();
}
function test_loadImage(row) {
@@ -221,8 +221,7 @@ CanvasTestCase {
verify(!c.isImageLoaded("red.png"));
c.loadImage("red.png");
- wait(200);
- verify(c.isImageLoaded("red.png"));
+ tryVerify(function() { return c.isImageLoaded("red.png") });
verify(!c.isImageLoading("red.png"));
verify(!c.isImageError("red.png"));
diff --git a/tests/auto/quick/qquickcanvasitem/qquickcanvasitem.pro b/tests/auto/quick/qquickcanvasitem/qquickcanvasitem.pro
index 70e5a05f8d..90c7962382 100644
--- a/tests/auto/quick/qquickcanvasitem/qquickcanvasitem.pro
+++ b/tests/auto/quick/qquickcanvasitem/qquickcanvasitem.pro
@@ -55,5 +55,3 @@ OTHER_FILES += \
data/yellow75.png \
data/tst_invalidContext.qml
-
-CONFIG += insignificant_test # QTBUG-41043
diff --git a/tests/auto/quick/qquickcanvasitem/tst_qquickcanvasitem.cpp b/tests/auto/quick/qquickcanvasitem/tst_qquickcanvasitem.cpp
index dad8df0682..4a83bd6c0d 100644
--- a/tests/auto/quick/qquickcanvasitem/tst_qquickcanvasitem.cpp
+++ b/tests/auto/quick/qquickcanvasitem/tst_qquickcanvasitem.cpp
@@ -46,6 +46,8 @@ public slots:
false
#endif
));
+ engine->rootContext()->setContextProperty("applicationDirPath",
+ QCoreApplication::applicationDirPath());
}
};