Krita Source Code Documentation
Loading...
Searching...
No Matches
KisUpdateTimeMonitor Class Reference

#include <kis_update_time_monitor.h>

+ Inheritance diagram for KisUpdateTimeMonitor:

Public Member Functions

void endStrokeMeasure ()
 
 KisUpdateTimeMonitor ()
 
void printValues ()
 
 Private ()
 
void reportJobFinished (void *key, const QVector< QRect > &rects)
 
void reportJobStarted (void *key)
 
void reportMouseMove (const QPointF &pos)
 
void reportPaintOpPreset (KisPaintOpPresetSP preset)
 
void reportUpdateFinished (const QRect &rect)
 
void startStrokeMeasure ()
 
 ~KisUpdateTimeMonitor ()
 
- Public Member Functions inherited from Private
 Private (KisCanvas2 *c)
 

Static Public Member Functions

static KisUpdateTimeMonitorinstance ()
 

Public Attributes

QSet< StrokeTicket * > finishedTickets
 
qint64 jobsTime
 
QPointF lastMousePos
 
bool loggingEnabled
 
qreal mousePath
 
QMutex mutex
 
qint32 numTickets
 
qint32 numUpdates
 
QHash< void *, StrokeTicket * > preliminaryTickets
 
KisPaintOpPresetSP preset
 
qint64 responseTime
 
QElapsedTimer strokeTime
 
- Public Attributes inherited from Private
KisCanvas2canvas
 
int displayedFrame
 
int intendedFrame
 

Private Attributes

Private *const m_d
 

Detailed Description

Definition at line 67 of file kis_update_time_monitor.cpp.

Constructor & Destructor Documentation

◆ KisUpdateTimeMonitor()

KisUpdateTimeMonitor::KisUpdateTimeMonitor ( )

Definition at line 97 of file kis_update_time_monitor.cpp.

98 : m_d(new Private)
99{
100 if (m_d->loggingEnabled) {
101 QDir dir;
102 if (dir.exists("log")) {
103 dir.remove("log");
104 }
105 dir.mkdir("log");
106 }
107}

References m_d.

◆ ~KisUpdateTimeMonitor()

KisUpdateTimeMonitor::~KisUpdateTimeMonitor ( )

Definition at line 109 of file kis_update_time_monitor.cpp.

110{
111 delete m_d;
112}

References m_d.

Member Function Documentation

◆ endStrokeMeasure()

void KisUpdateTimeMonitor::endStrokeMeasure ( )

Definition at line 136 of file kis_update_time_monitor.cpp.

137{
138 if (!m_d->loggingEnabled) return;
139
140 QMutexLocker locker(&m_d->mutex);
141
142 if (m_d->numTickets) {
143 printValues();
144 }
145}

References m_d, and printValues().

◆ instance()

KisUpdateTimeMonitor * KisUpdateTimeMonitor::instance ( )
static

Definition at line 114 of file kis_update_time_monitor.cpp.

115{
116 return s_instance;
117}

◆ printValues()

void KisUpdateTimeMonitor::printValues ( )

Definition at line 168 of file kis_update_time_monitor.cpp.

169{
170 qint64 strokeTime = m_d->strokeTime.elapsed();
171 qreal responseTime = qreal(m_d->responseTime) / m_d->numTickets;
172 qreal nonUpdateTime = qreal(m_d->jobsTime) / m_d->numTickets;
173 qreal jobsPerUpdate = qreal(m_d->numTickets) / m_d->numUpdates;
174 qreal mouseSpeed = qreal(m_d->mousePath) / strokeTime;
175
176 QString prefix;
177
178 if (m_d->preset) {
179 KoResourceSP preset = m_d->preset->clone();
180 prefix = QString("%1.").arg(preset->name());
181 preset->setFilename(QString("log/%1.kpp").arg(preset->name()));
182 preset->save();
183 }
184
185 QFile logFile(QString("log/%1stroke.rdata").arg(prefix));
186 logFile.open(QIODevice::Append);
187 QTextStream stream(&logFile);
189
190 stream << i18n("Stroke Time:") << strokeTime << "\t"
191 << i18n("Mouse Speed:") << QString::number( mouseSpeed, 'f', 3 ) << "\t"
192 << i18n("Jobs/Update:") << QString::number( jobsPerUpdate, 'f', 3 ) << "\t"
193 << i18n("Non Update Time:") << QString::number( nonUpdateTime, 'f', 3 ) << "\t"
194 << i18n("Response Time:") << responseTime << Qt::endl; // 'endl' will use the correct OS line ending
195 logFile.close();
196}
void setUtf8OnStream(QTextStream &stream)

References m_d, preset, responseTime, KisPortingUtils::setUtf8OnStream(), and strokeTime.

◆ Private()

KisUpdateTimeMonitor::Private ( )
inline

◆ reportJobFinished()

void KisUpdateTimeMonitor::reportJobFinished ( void * key,
const QVector< QRect > & rects )

Definition at line 210 of file kis_update_time_monitor.cpp.

211{
212 if (!m_d->loggingEnabled) return;
213
214 QMutexLocker locker(&m_d->mutex);
215
216 StrokeTicket *ticket = m_d->preliminaryTickets.take(key);
217 if( ticket ){
218 ticket->jobCompleted();
219
220 Q_FOREACH (const QRect &rect, rects) {
221 ticket->dirtyRegion += rect;
222 }
223 m_d->finishedTickets.insert(ticket);
224 }
225}

References StrokeTicket::dirtyRegion, StrokeTicket::jobCompleted(), and m_d.

◆ reportJobStarted()

void KisUpdateTimeMonitor::reportJobStarted ( void * key)

Definition at line 198 of file kis_update_time_monitor.cpp.

199{
200 if (!m_d->loggingEnabled) return;
201
202 QMutexLocker locker(&m_d->mutex);
203
204 StrokeTicket *ticket = new StrokeTicket();
205 ticket->start();
206
207 m_d->preliminaryTickets.insert(key, ticket);
208}

References m_d, and StrokeTicket::start().

◆ reportMouseMove()

void KisUpdateTimeMonitor::reportMouseMove ( const QPointF & pos)

Definition at line 154 of file kis_update_time_monitor.cpp.

155{
156 if (!m_d->loggingEnabled) return;
157
158 QMutexLocker locker(&m_d->mutex);
159
160 if (!m_d->lastMousePos.isNull()) {
161 qreal distance = kisDistance(m_d->lastMousePos, pos);
162 m_d->mousePath += distance;
163 }
164
165 m_d->lastMousePos = pos;
166}
qreal distance(const QPointF &p1, const QPointF &p2)
qreal kisDistance(const QPointF &pt1, const QPointF &pt2)
Definition kis_global.h:190

References distance(), kisDistance(), and m_d.

◆ reportPaintOpPreset()

void KisUpdateTimeMonitor::reportPaintOpPreset ( KisPaintOpPresetSP preset)

Definition at line 147 of file kis_update_time_monitor.cpp.

148{
149 if (!m_d->loggingEnabled) return;
150
151 m_d->preset = preset;
152}

References m_d, and preset.

◆ reportUpdateFinished()

void KisUpdateTimeMonitor::reportUpdateFinished ( const QRect & rect)

Definition at line 227 of file kis_update_time_monitor.cpp.

228{
229 if (!m_d->loggingEnabled) return;
230
231 QMutexLocker locker(&m_d->mutex);
232
233 Q_FOREACH (StrokeTicket *ticket, m_d->finishedTickets) {
234 ticket->dirtyRegion -= rect;
235 if(ticket->dirtyRegion.isEmpty()) {
236 ticket->updateCompleted();
237 m_d->jobsTime += ticket->jobTime();
238 m_d->responseTime += ticket->jobTime() + ticket->updateTime();
239 m_d->numTickets++;
240
241 m_d->finishedTickets.remove(ticket);
242 delete ticket;
243 }
244 }
245 m_d->numUpdates++;
246}
qint64 updateTime() const

References StrokeTicket::dirtyRegion, StrokeTicket::jobTime(), m_d, StrokeTicket::updateCompleted(), and StrokeTicket::updateTime().

◆ startStrokeMeasure()

void KisUpdateTimeMonitor::startStrokeMeasure ( )

Definition at line 119 of file kis_update_time_monitor.cpp.

120{
121 if (!m_d->loggingEnabled) return;
122
123 QMutexLocker locker(&m_d->mutex);
124
125 m_d->jobsTime = 0;
126 m_d->responseTime = 0;
127 m_d->numTickets = 0;
128 m_d->numUpdates = 0;
129 m_d->mousePath = 0;
130
131 m_d->lastMousePos = QPointF();
132 m_d->preset = 0;
133 m_d->strokeTime.start();
134}

References m_d.

Member Data Documentation

◆ finishedTickets

QSet<StrokeTicket*> KisUpdateTimeMonitor::finishedTickets

Definition at line 81 of file kis_update_time_monitor.cpp.

◆ jobsTime

qint64 KisUpdateTimeMonitor::jobsTime

Definition at line 83 of file kis_update_time_monitor.cpp.

◆ lastMousePos

QPointF KisUpdateTimeMonitor::lastMousePos

Definition at line 90 of file kis_update_time_monitor.cpp.

◆ loggingEnabled

bool KisUpdateTimeMonitor::loggingEnabled

Definition at line 94 of file kis_update_time_monitor.cpp.

◆ m_d

Private* const KisUpdateTimeMonitor::m_d
private

Definition at line 40 of file kis_update_time_monitor.h.

◆ mousePath

qreal KisUpdateTimeMonitor::mousePath

Definition at line 89 of file kis_update_time_monitor.cpp.

◆ mutex

QMutex KisUpdateTimeMonitor::mutex

Definition at line 87 of file kis_update_time_monitor.cpp.

◆ numTickets

qint32 KisUpdateTimeMonitor::numTickets

Definition at line 85 of file kis_update_time_monitor.cpp.

◆ numUpdates

qint32 KisUpdateTimeMonitor::numUpdates

Definition at line 86 of file kis_update_time_monitor.cpp.

◆ preliminaryTickets

QHash<void*, StrokeTicket*> KisUpdateTimeMonitor::preliminaryTickets

Definition at line 80 of file kis_update_time_monitor.cpp.

◆ preset

KisPaintOpPresetSP KisUpdateTimeMonitor::preset

Definition at line 92 of file kis_update_time_monitor.cpp.

◆ responseTime

qint64 KisUpdateTimeMonitor::responseTime

Definition at line 84 of file kis_update_time_monitor.cpp.

◆ strokeTime

QElapsedTimer KisUpdateTimeMonitor::strokeTime

Definition at line 91 of file kis_update_time_monitor.cpp.


The documentation for this class was generated from the following files: