Krita Source Code Documentation
Loading...
Searching...
No Matches
kis_memory_statistics_server.cpp File Reference
#include "kis_memory_statistics_server.h"
#include <QGlobalStatic>
#include <QApplication>
#include "kis_image.h"
#include "kis_image_config.h"
#include "kis_signal_compressor.h"
#include "tiles3/kis_tile_data_store.h"

Go to the source code of this file.

Classes

class  KisMemoryStatisticsServer
 

Functions

void addDevice (KisPaintDeviceSP dev, bool isProjection, QSet< KisPaintDevice * > &devices, qint64 &memBound, qint64 &layersSize, qint64 &projectionsSize, qint64 &lodSize)
 
qint64 calculateNodeMemoryHiBound (KisNodeSP node, qint64 &layersSize, qint64 &projectionsSize, qint64 &lodSize)
 
qint64 calculateNodeMemoryHiBoundStep (KisNodeSP node, QSet< KisPaintDevice * > &devices, qint64 &layersSize, qint64 &projectionsSize, qint64 &lodSize)
 

Function Documentation

◆ addDevice()

void addDevice ( KisPaintDeviceSP dev,
bool isProjection,
QSet< KisPaintDevice * > & devices,
qint64 & memBound,
qint64 & layersSize,
qint64 & projectionsSize,
qint64 & lodSize )
inline

Definition at line 52 of file kis_memory_statistics_server.cpp.

59{
60 if (dev && !devices.contains(dev.data())) {
61 devices.insert(dev.data());
62
63 qint64 imageData = 0;
64 qint64 temporaryData = 0;
65 qint64 lodData = 0;
66
67 dev->estimateMemoryStats(imageData, temporaryData, lodData);
68 memBound += imageData + temporaryData + lodData;
69
70 KIS_SAFE_ASSERT_RECOVER_NOOP(!temporaryData || isProjection);
71
72 if (!isProjection) {
73 layersSize += imageData + temporaryData;
74 } else {
75 projectionsSize += imageData + temporaryData;
76 }
77
78 lodSize += lodData;
79 }
80}
void estimateMemoryStats(qint64 &imageData, qint64 &temporaryData, qint64 &lodData) const
#define KIS_SAFE_ASSERT_RECOVER_NOOP(cond)
Definition kis_assert.h:130

References KisSharedPtr< T >::data(), KisPaintDevice::estimateMemoryStats(), and KIS_SAFE_ASSERT_RECOVER_NOOP.

◆ calculateNodeMemoryHiBound()

qint64 calculateNodeMemoryHiBound ( KisNodeSP node,
qint64 & layersSize,
qint64 & projectionsSize,
qint64 & lodSize )

Definition at line 109 of file kis_memory_statistics_server.cpp.

113{
114 layersSize = 0;
115 projectionsSize = 0;
116 lodSize = 0;
117
118 QSet<KisPaintDevice*> devices;
120 devices,
121 layersSize,
122 projectionsSize,
123 lodSize);
124}
qint64 calculateNodeMemoryHiBoundStep(KisNodeSP node, QSet< KisPaintDevice * > &devices, qint64 &layersSize, qint64 &projectionsSize, qint64 &lodSize)

References calculateNodeMemoryHiBoundStep().

◆ calculateNodeMemoryHiBoundStep()

qint64 calculateNodeMemoryHiBoundStep ( KisNodeSP node,
QSet< KisPaintDevice * > & devices,
qint64 & layersSize,
qint64 & projectionsSize,
qint64 & lodSize )

Definition at line 82 of file kis_memory_statistics_server.cpp.

87{
88 qint64 memBound = 0;
89
90 const bool originalIsProjection =
91 node->inherits("KisGroupLayer") ||
92 node->inherits("KisAdjustmentLayer");
93
94
95 addDevice(node->paintDevice(), false, devices, memBound, layersSize, projectionsSize, lodSize);
96 addDevice(node->original(), originalIsProjection, devices, memBound, layersSize, projectionsSize, lodSize);
97 addDevice(node->projection(), true, devices, memBound, layersSize, projectionsSize, lodSize);
98
99 node = node->firstChild();
100 while (node) {
101 memBound += calculateNodeMemoryHiBoundStep(node, devices,
102 layersSize, projectionsSize, lodSize);
103 node = node->nextSibling();
104 }
105
106 return memBound;
107}
void addDevice(KisPaintDeviceSP dev, bool isProjection, QSet< KisPaintDevice * > &devices, qint64 &memBound, qint64 &layersSize, qint64 &projectionsSize, qint64 &lodSize)
virtual KisPaintDeviceSP projection() const =0
virtual KisPaintDeviceSP original() const =0
virtual KisPaintDeviceSP paintDevice() const =0
KisNodeSP firstChild() const
Definition kis_node.cpp:361
KisNodeSP nextSibling() const
Definition kis_node.cpp:408

References addDevice(), calculateNodeMemoryHiBoundStep(), KisNode::firstChild(), KisNode::nextSibling(), KisBaseNode::original(), KisBaseNode::paintDevice(), and KisBaseNode::projection().