From c4a515a8c64f3e3c635176cf2ee7d5ce126aaf62 Mon Sep 17 00:00:00 2001 From: Dmitry Kazakov Date: Mon, 17 Aug 2015 15:48:09 +0300 Subject: [PATCH] Recreate a default bounds object on every KisMask::setImage() call Basically, default bounds objects may be shared among multiple objects so changing it is not safe. CCBUG:345619 --- krita/image/kis_default_bounds.cpp | 5 ----- krita/image/kis_default_bounds.h | 2 -- krita/image/kis_mask.cc | 8 +++----- 3 files changed, 3 insertions(+), 12 deletions(-) diff --git a/krita/image/kis_default_bounds.cpp b/krita/image/kis_default_bounds.cpp index f00ac18bb4..75a4810b8e 100644 --- a/krita/image/kis_default_bounds.cpp +++ b/krita/image/kis_default_bounds.cpp @@ -47,11 +47,6 @@ KisDefaultBounds::~KisDefaultBounds() delete m_d; } -void KisDefaultBounds::setImage(KisImageWSP image) -{ - m_d->image = image; -} - QRect KisDefaultBounds::bounds() const { /** diff --git a/krita/image/kis_default_bounds.h b/krita/image/kis_default_bounds.h index ce5c8b802a..94c11625a4 100644 --- a/krita/image/kis_default_bounds.h +++ b/krita/image/kis_default_bounds.h @@ -37,8 +37,6 @@ public: KisDefaultBounds(KisImageWSP image = 0); virtual ~KisDefaultBounds(); - void setImage(KisImageWSP image); - QRect bounds() const; bool wrapAroundMode() const; diff --git a/krita/image/kis_mask.cc b/krita/image/kis_mask.cc index 84a3258d96..13b9977e3d 100644 --- a/krita/image/kis_mask.cc +++ b/krita/image/kis_mask.cc @@ -95,11 +95,9 @@ KisMask::~KisMask() void KisMask::setImage(KisImageWSP image) { - KisDefaultBoundsBaseSP db = m_d->selection->pixelSelection()->defaultBounds(); - KisDefaultBounds *defaultBounds = dynamic_cast(db.data()); - if (defaultBounds) { - defaultBounds->setImage(image); - } + KisPaintDeviceSP parentPaintDevice = parent() ? parent()->original() : 0; + KisDefaultBoundsBaseSP defaultBounds = new KisSelectionDefaultBounds(parentPaintDevice, image); + m_d->selection->setDefaultBounds(defaultBounds); } bool KisMask::allowAsChild(KisNodeSP node) const -- GitLab