OSDN Git Service

avoid temporary copy in QPaintEngine::drawImage()
authorIvailo Monev <xakepa10@laimg.moc>
Mon, 24 Jun 2019 13:29:02 +0000 (13:29 +0000)
committerIvailo Monev <xakepa10@laimg.moc>
Mon, 24 Jun 2019 13:29:02 +0000 (13:29 +0000)
Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
src/gui/painting/qpaintengine.cpp
src/gui/painting/qpaintengine_p.h

index cbeb46e..63eef0f 100644 (file)
@@ -588,13 +588,8 @@ void QPaintEngine::drawTiledPixmap(const QRectF &rect, const QPixmap &pixmap, co
 void QPaintEngine::drawImage(const QRectF &r, const QImage &image, const QRectF &sr,
                              Qt::ImageConversionFlags flags)
 {
-    QRectF baseSize(0, 0, image.width(), image.height());
-    QImage im = image;
-    if (baseSize != sr)
-        im = im.copy(qFloor(sr.x()), qFloor(sr.y()),
-                     qCeil(sr.width()), qCeil(sr.height()));
-    QPixmap pm = QPixmap::fromImage(im, flags);
-    drawPixmap(r, pm, QRectF(QPointF(0, 0), pm.size()));
+    QPixmap pm = QPixmap::fromImage(image.copy(sr.toRect()), flags);
+    drawPixmap(r, pm, QRectF(QPoint(0, 0), pm.size()));
 }
 
 /*!
index 338b9b6..eede904 100644 (file)
@@ -48,7 +48,6 @@
 #include "QtGui/qpainter.h"
 #include "QtGui/qpaintengine.h"
 #include "QtGui/qregion.h"
-#include "qobject_p.h"
 
 QT_BEGIN_NAMESPACE