diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2010-12-14 03:32:37 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2010-12-14 03:32:37 (GMT) |
commit | d6dace9bebd8a8ad8caaecb69dd24dd1ddf96f4a (patch) | |
tree | 5b57c1bd03fe8b43ab2335dd40804bd269a4c2a5 /src/gui/image | |
parent | ed331fc0bb5e77109d67ca1de45bb978cf045cef (diff) | |
parent | 8ae82b0c16aa1bdd9b8c88ef5c3cd889b4cdac7a (diff) | |
download | Qt-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.cpp | 25 | ||||
-rw-r--r-- | src/gui/image/qpixmap_raster.cpp | 11 |
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; } |