summaryrefslogtreecommitdiffstats
path: root/src/gui/image/qimage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/image/qimage.cpp')
-rw-r--r--src/gui/image/qimage.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/gui/image/qimage.cpp b/src/gui/image/qimage.cpp
index 2dbb2f4b52..d0de95366f 100644
--- a/src/gui/image/qimage.cpp
+++ b/src/gui/image/qimage.cpp
@@ -69,6 +69,11 @@
QT_BEGIN_NAMESPACE
+static inline bool isLocked(QImageData *data)
+{
+ return data != 0 && data->is_locked;
+}
+
static inline bool checkPixelSize(const QImage::Format format)
{
switch (format) {
@@ -130,7 +135,7 @@ QImageData::QImageData()
dpmx(qt_defaultDpiX() * 100 / qreal(2.54)),
dpmy(qt_defaultDpiY() * 100 / qreal(2.54)),
offset(0, 0), own_data(true), ro_data(false), has_alpha_clut(false),
- is_cached(false), paintEngine(0)
+ is_cached(false), is_locked(false), paintEngine(0)
{
}
@@ -1022,7 +1027,7 @@ QImage::QImage(const char * const xpm[])
QImage::QImage(const QImage &image)
: QPaintDevice()
{
- if (image.paintingActive()) {
+ if (image.paintingActive() || isLocked(image.d)) {
d = 0;
operator=(image.copy());
} else {
@@ -1054,7 +1059,7 @@ QImage::~QImage()
QImage &QImage::operator=(const QImage &image)
{
- if (image.paintingActive()) {
+ if (image.paintingActive() || isLocked(image.d)) {
operator=(image.copy());
} else {
if (image.d)