summaryrefslogtreecommitdiffstats
path: root/src/gui/image
diff options
context:
space:
mode:
authorQt Continuous Integration System <qt-info@nokia.com>2010-12-14 03:32:37 (GMT)
committerQt Continuous Integration System <qt-info@nokia.com>2010-12-14 03:32:37 (GMT)
commitd6dace9bebd8a8ad8caaecb69dd24dd1ddf96f4a (patch)
tree5b57c1bd03fe8b43ab2335dd40804bd269a4c2a5 /src/gui/image
parented331fc0bb5e77109d67ca1de45bb978cf045cef (diff)
parent8ae82b0c16aa1bdd9b8c88ef5c3cd889b4cdac7a (diff)
downloadQt-d6dace9bebd8a8ad8caaecb69dd24dd1ddf96f4a.zip
Qt-d6dace9bebd8a8ad8caaecb69dd24dd1ddf96f4a.tar.gz
Qt-d6dace9bebd8a8ad8caaecb69dd24dd1ddf96f4a.tar.bz2
Merge branch 'qt-master-from-4.7' of scm.dev.nokia.troll.no:qt/qt-integration into master-integration
* 'qt-master-from-4.7' of scm.dev.nokia.troll.no:qt/qt-integration: (67 commits) Add expected failures for JS test suite on Symbian Ensure ListView contentHeight is set to a valid size. Revert "Add mirroring-positioners.qml example" that was accidentally pushed Fix dragging Flickable back over start point. Add mirroring-positioners.qml example A QAIM model resulted in items moving to incorrect locations Build on Symbian refuse to open empty translation files fix path separator matching fix -dont-process for mingw cross-build fix nonsense condition Fix qwidget test crash QmlViewer: Remove trailing whitespace QmlViewer: Remove trailing whitespace QmlViewer: Fix crash on exit Don't include <features.h> directly: non-standard header. Remove superfluous OpenGL linking for QtDeclarative Corrected case on Symbian library. Missing glyphs in GL when scaling QStaticText and QML text items PathView: removing the currentIndex could make it invalid. ...
Diffstat (limited to 'src/gui/image')
-rw-r--r--src/gui/image/qimage.cpp25
-rw-r--r--src/gui/image/qpixmap_raster.cpp11
2 files changed, 28 insertions, 8 deletions
diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
index 897cb64..556a6d7 100644
--- a/src/gui/image/qimage.cpp
+++ b/src/gui/image/qimage.cpp
@@ -1085,9 +1085,14 @@ QImage::QImage(const char * const xpm[])
QImage::QImage(const QImage &image)
: QPaintDevice()
{
- d = image.d;
- if (d)
- d->ref.ref();
+ if (image.paintingActive()) {
+ d = 0;
+ operator=(image.copy());
+ } else {
+ d = image.d;
+ if (d)
+ d->ref.ref();
+ }
}
#ifdef QT3_SUPPORT
@@ -1284,11 +1289,15 @@ QImage::~QImage()
QImage &QImage::operator=(const QImage &image)
{
- if (image.d)
- image.d->ref.ref();
- if (d && !d->ref.deref())
- delete d;
- d = image.d;
+ if (image.paintingActive()) {
+ operator=(image.copy());
+ } else {
+ if (image.d)
+ image.d->ref.ref();
+ if (d && !d->ref.deref())
+ delete d;
+ d = image.d;
+ }
return *this;
}
diff --git a/src/gui/image/qpixmap_raster.cpp b/src/gui/image/qpixmap_raster.cpp
index 65c0344..d34c9c8 100644
--- a/src/gui/image/qpixmap_raster.cpp
+++ b/src/gui/image/qpixmap_raster.cpp
@@ -44,11 +44,13 @@
#include "qpixmap_raster_p.h"
#include "qnativeimage_p.h"
#include "qimage_p.h"
+#include "qpaintengine.h"
#include "qbitmap.h"
#include "qimage.h"
#include <QBuffer>
#include <QImageReader>
+#include <private/qimage_p.h>
#include <private/qsimd_p.h>
#include <private/qwidget_p.h>
#include <private/qdrawhelper_p.h>
@@ -308,6 +310,15 @@ bool QRasterPixmapData::hasAlphaChannel() const
QImage QRasterPixmapData::toImage() const
{
+ if (!image.isNull()) {
+ QImageData *data = const_cast<QImage &>(image).data_ptr();
+ if (data->paintEngine && data->paintEngine->isActive()
+ && data->paintEngine->paintDevice() == &image)
+ {
+ return image.copy();
+ }
+ }
+
return image;
}