15#define DEBUG_LOG_TILE_ACTION(action, tile, col, row) \
16 printf("### MementoManager (0x%X): %s " \
17 "\ttile:\t0x%X (%d, %d) ###\n", (quintptr)this, action, \
18 (quintptr)tile, col, row)
20#define DEBUG_LOG_SIMPLE_ACTION(action) \
21 printf("### MementoManager (0x%X): %s\n", (quintptr)this, action)
23#define DEBUG_DUMP_MESSAGE(action) do { \
24 printf("\n### MementoManager (0x%X): %s \t\t##########\n", \
25 (quintptr)this, action); \
27 printf("##################################################################\n\n"); \
31#define DEBUG_LOG_TILE_ACTION(action, tile, col, row)
32#define DEBUG_LOG_SIMPLE_ACTION(action)
33#define DEBUG_DUMP_MESSAGE(action)
58#define blockRegistration() (m_registrationBlocked = true)
59#define unblockRegistration() (m_registrationBlocked = false)
60#define registrationBlocked() (m_registrationBlocked)
62#define namedTransactionInProgress() ((bool)m_currentMemento)
67 m_registrationBlocked(false)
76 : m_index(rhs.m_index, 0),
77 m_revisions(rhs.m_revisions),
78 m_cancelledRevisions(rhs.m_cancelledRevisions),
79 m_headsHashTable(rhs.m_headsHashTable, 0),
80 m_currentMemento(rhs.m_currentMemento),
81 m_registrationBlocked(rhs.m_registrationBlocked)
84 "KisMementoManager",
"(impossible happened) "
85 "The device has been copied while registration was blocked");
149 defaultTileData->
deref();
162 defaultTileData->
deref();
188 while ((mi = iter.
tile())) {
193 revisionList.append(mi);
261#define forEachReversed(iter, list) \
262 for(iter=list.end(); iter-- != list.begin();)
279 KisMementoItemList::iterator iter;
337 Q_FOREACH (mi, changeList.
itemList) {
360 if (revisionIndex < 0)
return;
362 for(; revisionIndex > 0; revisionIndex--) {
390 Q_FOREACH (mi, list) {
392 if(!parentMI)
continue;
394 while (parentMI->
parent()) {
395 parentMI = parentMI->
parent();
409 printf(
"KisMementoManager stats:\n");
410 printf(
"Index list\n");
414 while ((mi = iter.
tile())) {
419 printf(
"Revisions list:\n");
422 printf(
"--- revision #%d ---\n", i++);
423 Q_FOREACH (mi, changeList.
itemList) {
428 printf(
"\nCancelled revisions list:\n");
431 printf(
"--- revision #%d ---\n",
m_revisions.size() + i++);
432 Q_FOREACH (mi, changeList.
itemList) {
437 printf(
"----------------\n");
void changeTile(KisTile *tile)
KisTileSP tile(KisMementoManager *mm)
void deleteTile(KisTile *tile, KisTileData *defaultTileData)
void setParent(KisMementoItemSP parent)
KisMementoItemSP parent()
qint32 findRevisionByMemento(KisMementoSP memento) const
KisMementoSP currentMemento()
void registerTileChange(KisTile *tile)
KisMementoItemHashTable m_index
KisMementoSP m_currentMemento
KisMementoSP getMemento()
KisHistoryList m_cancelledRevisions
void rollback(KisTileHashTable *ht, KisMementoSP memento)
KisMementoItemHashTable m_headsHashTable
KisHistoryList m_revisions
QMutex m_currentMementoExtentLock
void rollforward(KisTileHashTable *ht, KisMementoSP memento)
void registerTileDeleted(KisTile *tile)
void setDefaultTileData(KisTileData *defaultTileData)
KisTileSP getCommittedTile(qint32 col, qint32 row, bool &existingTile)
bool m_registrationBlocked
void resetRevisionHistory(KisMementoItemList list)
void purgeHistory(KisMementoSP oldestMemento)
void updateExtent(qint32 col, qint32 row, QMutex *currentMementoExtentLock)
static KisTileDataStore * instance()
std::enable_if< std::is_same< Helper, QWriteLocker >::value, void >::type moveCurrentToHashTable(KisTileHashTableTraits< T > *newHashTable)
KisTileData * refAndFetchDefaultTileData() const
TileTypeSP getReadOnlyTileLazy(qint32 col, qint32 row, bool &existingTile)
TileTypeSP getExistingTile(qint32 col, qint32 row)
void addTile(TileTypeSP tile)
bool deleteTile(TileTypeSP tile)
void setDefaultTileData(KisTileData *defaultTileData)
TileTypeSP getTileLazy(qint32 col, qint32 row, bool &newTile)
#define KIS_SAFE_ASSERT_RECOVER_RETURN(cond)
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
#define forEachReversed(iter, list)
#define blockRegistration()
#define unblockRegistration()
#define DEBUG_LOG_SIMPLE_ACTION(action)
#define DEBUG_DUMP_MESSAGE(action)
#define namedTransactionInProgress()
#define DEBUG_LOG_TILE_ACTION(action, tile, col, row)
#define registrationBlocked()
KisSharedPtr< KisTile > KisTileSP
struct Tile * newTile(struct rect r)
KisMementoItemList itemList