9#include <QGlobalStatic>
13#include <QMutexLocker>
20#include <QElapsedTimer>
46 m_jobTime = m_timer.restart();
50 m_updateTime = m_timer.restart();
100 if (
m_d->loggingEnabled) {
102 if (dir.exists(
"log")) {
121 if (!
m_d->loggingEnabled)
return;
123 QMutexLocker locker(&
m_d->mutex);
126 m_d->responseTime = 0;
131 m_d->lastMousePos = QPointF();
133 m_d->strokeTime.start();
138 if (!
m_d->loggingEnabled)
return;
140 QMutexLocker locker(&
m_d->mutex);
142 if (
m_d->numTickets) {
149 if (!
m_d->loggingEnabled)
return;
156 if (!
m_d->loggingEnabled)
return;
158 QMutexLocker locker(&
m_d->mutex);
160 if (!
m_d->lastMousePos.isNull()) {
165 m_d->lastMousePos = pos;
172 qreal nonUpdateTime = qreal(
m_d->jobsTime) /
m_d->numTickets;
173 qreal jobsPerUpdate = qreal(
m_d->numTickets) /
m_d->numUpdates;
180 prefix = QString(
"%1.").arg(
preset->name());
181 preset->setFilename(QString(
"log/%1.kpp").arg(
preset->name()));
185 QFile logFile(QString(
"log/%1stroke.rdata").arg(prefix));
186 logFile.open(QIODevice::Append);
187 QTextStream stream(&logFile);
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"
200 if (!
m_d->loggingEnabled)
return;
202 QMutexLocker locker(&
m_d->mutex);
207 m_d->preliminaryTickets.insert(key, ticket);
212 if (!
m_d->loggingEnabled)
return;
214 QMutexLocker locker(&
m_d->mutex);
220 Q_FOREACH (
const QRect &
rect, rects) {
223 m_d->finishedTickets.insert(ticket);
229 if (!
m_d->loggingEnabled)
return;
231 QMutexLocker locker(&
m_d->mutex);
241 m_d->finishedTickets.remove(ticket);
Q_GLOBAL_STATIC(KisStoragePluginRegistry, s_instance)
qreal distance(const QPointF &p1, const QPointF &p2)
bool enablePerfLog(bool requestDefault=false) const
qreal kisDistance(const QPointF &pt1, const QPointF &pt2)
void setUtf8OnStream(QTextStream &stream)
void reportJobStarted(void *key)
void reportJobFinished(void *key, const QVector< QRect > &rects)
QHash< void *, StrokeTicket * > preliminaryTickets
KisPaintOpPresetSP preset
static KisUpdateTimeMonitor * instance()
void startStrokeMeasure()
void reportUpdateFinished(const QRect &rect)
void reportMouseMove(const QPointF &pos)
void reportPaintOpPreset(KisPaintOpPresetSP preset)
QSet< StrokeTicket * > finishedTickets
qint64 updateTime() const