|
Krita Source Code Documentation
|
#include <kis_async_merger.h>
Public Member Functions | |
| void | startMerge (KisBaseRectsWalker &walker, bool notifyClones=true) |
Private Member Functions | |
| bool | compositeWithProjection (KisProjectionLeafSP leaf, const QRect &rect) |
| void | doNotifyClones (KisBaseRectsWalker &walker) |
| void | resetProjection () |
| void | setupProjection (KisProjectionLeafSP currentLeaf, const QRect &rect, bool useTempProjection) |
| void | writeProjection (KisProjectionLeafSP topmostLeaf, bool useTempProjection, const QRect &rect) |
Private Attributes | |
| KisPaintDeviceSP | m_cachedPaintDevice |
| KisPaintDeviceSP | m_currentProjection |
| KisPaintDeviceSP | m_finalProjection |
Definition at line 16 of file kis_async_merger.h.
|
inlineprivate |
Definition at line 316 of file kis_async_merger.cpp.
References DEBUG_NODE_ACTION, and m_currentProjection.
|
inlineprivate |
Definition at line 328 of file kis_async_merger.cpp.
References KisBaseRectsWalker::cloneNotifications().
|
inlineprivate |
Definition at line 272 of file kis_async_merger.cpp.
References m_currentProjection, and m_finalProjection.
|
inlineprivate |
It happened so that our parent uses our own projection as its original. It means obligeChild mechanism works. We won't initialise m_currentProjection. This will cause writeProjection() and compositeWithProjection() do nothing when called.
Definition at line 277 of file kis_async_merger.cpp.
References KisPaintDevice::clear(), KisPaintDevice::colorSpace(), m_cachedPaintDevice, m_currentProjection, m_finalProjection, and KisPaintDevice::prepareClone().
| void KisAsyncMerger::startMerge | ( | KisBaseRectsWalker & | walker, |
| bool | notifyClones = true ) |
In some unidentified cases the nodes might be removed while the updates are still running. We have no proof of it yet, so just add a safety assert here.
Definition at line 172 of file kis_async_merger.cpp.
References compositeWithProjection(), DEBUG_NODE_ACTION, doNotifyClones(), KIS_SAFE_ASSERT_RECOVER_RETURN, KisBaseRectsWalker::leafStack(), KisBaseRectsWalker::levelOfDetail(), KisBaseRectsWalker::JobItem::m_applyRect, m_currentProjection, KisBaseRectsWalker::JobItem::m_leaf, KisBaseRectsWalker::JobItem::m_position, KisBaseRectsWalker::JobItem::m_renderFlags, KisBaseRectsWalker::N_ABOVE_FILTHY, KisBaseRectsWalker::N_EXTRA, KisBaseRectsWalker::N_FILTHY, KisBaseRectsWalker::N_FILTHY_PROJECTION, KisBaseRectsWalker::N_TOPMOST, KisBaseRectsWalker::needRectVaries(), KisBaseRectsWalker::requestedRect(), resetProjection(), setupProjection(), KisBaseRectsWalker::startNode(), warnImage, and writeProjection().
|
inlineprivate |
Definition at line 305 of file kis_async_merger.cpp.
References KisPainter::copyAreaOptimized(), DEBUG_NODE_ACTION, m_currentProjection, and m_finalProjection.
|
private |
Creation of the paint device is quite expensive, so we'll just save the pointer to our temporary device here and will get it when needed. This variable must not be used anywhere out of setupProjection()
Definition at line 52 of file kis_async_merger.h.
|
private |
The place where intermediate results of layer's merge are going. It may be equal to m_finalProjection. In this case the projection will be written directly to the original of the parent layer
Definition at line 35 of file kis_async_merger.h.
|
private |
The final destination of every projection of all the layers. It is equal to the original of a parental node. NOTE: This pointer is cached here to avoid race conditions
Definition at line 44 of file kis_async_merger.h.