diff --git a/libs/image/tiles3/kis_random_accessor.cc b/libs/image/tiles3/kis_random_accessor.cc index 838b397..9373ab8 100644 --- a/libs/image/tiles3/kis_random_accessor.cc +++ b/libs/image/tiles3/kis_random_accessor.cc @@ -118,7 +118,10 @@ const quint8* KisRandomAccessor2::rawDataConst() const KisRandomAccessor2::KisTileInfo* KisRandomAccessor2::fetchTileData(qint32 col, qint32 row) { KisTileInfo* kti = new KisTileInfo; - kti->tile = m_ktm->getTile(col, row, m_writable); + + m_ktm->getTilesPair(col, row, m_writable, kti->tile, kti->oldtile); + + //kti->tile = m_ktm->getTile(col, row, m_writable); lockTile(kti->tile); kti->data = kti->tile->data(); @@ -129,7 +132,7 @@ KisRandomAccessor2::KisTileInfo* KisRandomAccessor2::fetchTileData(qint32 col, q kti->area_y2 = kti->area_y1 + KisTileData::WIDTH - 1; // set old data - kti->oldtile = m_ktm->getOldTile(col, row); + //kti->oldtile = m_ktm->getOldTile(col, row); lockOldTile(kti->oldtile); kti->oldData = kti->oldtile->data(); return kti; diff --git a/libs/image/tiles3/kis_tiled_data_manager.h b/libs/image/tiles3/kis_tiled_data_manager.h index f644a65..75fdf23 100644 --- a/libs/image/tiles3/kis_tiled_data_manager.h +++ b/libs/image/tiles3/kis_tiled_data_manager.h @@ -88,6 +88,14 @@ public: return m_defaultPixel; } + inline void getTilesPair(qint32 col, qint32 row, bool writable, KisTileSP &tile, KisTileSP &oldTile) { + tile = getTile(col, row, writable); + oldTile = m_mementoManager->getCommitedTile(col, row); + if (!oldTile) { + oldTile = tile; + } + } + inline KisTileSP getTile(qint32 col, qint32 row, bool writable) { if (writable) { bool newTile;