summaryrefslogtreecommitdiffstats
path: root/src/gui/painting
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@digia.com>2015-01-12 14:57:08 +0100
committerAllan Sandfeld Jensen <allan.jensen@theqtcompany.com>2015-02-02 22:05:31 +0000
commit9cd5c614559159fe09b414d568f88a192405b84d (patch)
tree6e577b7b00862e94a29f6b974d80ef73ca3c23fd /src/gui/painting
parentcc7d84e09ed824af96aa5e59ba8f3a6522e7d7e6 (diff)
Avoid unneeded QBrush::texture() calls
If a QBrush has been created without QPixmap the texture() method will create one. This patch avoids that in several places by checking the type of the texture brush before accessing it, or not accessing it at all. Task-number: QTBUG-43766 Change-Id: If6009fe1d5bd51b239ae2c838e5c3b904b56b11a Reviewed-by: Marc Mutz <marc.mutz@kdab.com> Reviewed-by: Gunnar Sletta <gunnar@sletta.org>
Diffstat (limited to 'src/gui/painting')
-rw-r--r--src/gui/painting/qbrush.cpp18
-rw-r--r--src/gui/painting/qpdf.cpp4
2 files changed, 16 insertions, 6 deletions
diff --git a/src/gui/painting/qbrush.cpp b/src/gui/painting/qbrush.cpp
index d136f3a903..40dad85cde 100644
--- a/src/gui/painting/qbrush.cpp
+++ b/src/gui/painting/qbrush.cpp
@@ -1029,7 +1029,10 @@ QDataStream &operator<<(QDataStream &s, const QBrush &b)
s << style << b.color();
if (b.style() == Qt::TexturePattern) {
- s << b.texture();
+ if (s.version() >= QDataStream::Qt_5_5)
+ s << b.textureImage();
+ else
+ s << b.texture();
} else if (s.version() >= QDataStream::Qt_4_0 && gradient_style) {
const QGradient *gradient = b.gradient();
int type_as_int = int(gradient->type());
@@ -1089,10 +1092,17 @@ QDataStream &operator>>(QDataStream &s, QBrush &b)
QColor color;
s >> style;
s >> color;
+ b = QBrush(color);
if (style == Qt::TexturePattern) {
- QPixmap pm;
- s >> pm;
- b = QBrush(color, pm);
+ if (s.version() >= QDataStream::Qt_5_5) {
+ QImage img;
+ s >> img;
+ b.setTextureImage(qMove(img));
+ } else {
+ QPixmap pm;
+ s >> pm;
+ b.setTexture(qMove(pm));
+ }
} else if (style == Qt::LinearGradientPattern
|| style == Qt::RadialGradientPattern
|| style == Qt::ConicalGradientPattern) {
diff --git a/src/gui/painting/qpdf.cpp b/src/gui/painting/qpdf.cpp
index 2efaec41ef..687d8efcec 100644
--- a/src/gui/painting/qpdf.cpp
+++ b/src/gui/painting/qpdf.cpp
@@ -2264,9 +2264,9 @@ int QPdfEnginePrivate::addBrushPattern(const QTransform &m, bool *specifyColor,
if (pattern.isEmpty()) {
if (brush.style() != Qt::TexturePattern)
return 0;
- QImage image = brush.texture().toImage();
+ QImage image = brush.textureImage();
bool bitmap = true;
- imageObject = addImage(image, &bitmap, brush.texture().cacheKey());
+ imageObject = addImage(image, &bitmap, image.cacheKey());
if (imageObject != -1) {
QImage::Format f = image.format();
if (f != QImage::Format_MonoLSB && f != QImage::Format_Mono) {