summaryrefslogtreecommitdiff
path: root/rbutil/rbutilqt/systrace.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/rbutilqt/systrace.cpp')
-rw-r--r--rbutil/rbutilqt/systrace.cpp29
1 files changed, 26 insertions, 3 deletions
diff --git a/rbutil/rbutilqt/systrace.cpp b/rbutil/rbutilqt/systrace.cpp
index 1b9de6b713..a1e8bd0239 100644
--- a/rbutil/rbutilqt/systrace.cpp
+++ b/rbutil/rbutilqt/systrace.cpp
@@ -24,6 +24,8 @@
24#include "rbsettings.h" 24#include "rbsettings.h"
25 25
26QString SysTrace::debugbuffer; 26QString SysTrace::debugbuffer;
27QString SysTrace::lastmessage;
28unsigned int SysTrace::repeat = 0;
27 29
28SysTrace::SysTrace(QWidget *parent) : QDialog(parent) 30SysTrace::SysTrace(QWidget *parent) : QDialog(parent)
29{ 31{
@@ -41,6 +43,7 @@ SysTrace::SysTrace(QWidget *parent) : QDialog(parent)
41void SysTrace::refresh(void) 43void SysTrace::refresh(void)
42{ 44{
43 int pos = ui.textTrace->verticalScrollBar()->value(); 45 int pos = ui.textTrace->verticalScrollBar()->value();
46 flush();
44 ui.textTrace->setHtml("<pre>" + debugbuffer + "</pre>"); 47 ui.textTrace->setHtml("<pre>" + debugbuffer + "</pre>");
45 ui.textTrace->verticalScrollBar()->setValue(pos); 48 ui.textTrace->verticalScrollBar()->setValue(pos);
46 QString oldlog = RbSettings::value(RbSettings::CachePath).toString() 49 QString oldlog = RbSettings::value(RbSettings::CachePath).toString()
@@ -54,6 +57,8 @@ void SysTrace::save(QString filename)
54 if(filename.isEmpty()) 57 if(filename.isEmpty())
55 filename = RbSettings::value(RbSettings::CachePath).toString() 58 filename = RbSettings::value(RbSettings::CachePath).toString()
56 + "/rbutil-trace.log"; 59 + "/rbutil-trace.log";
60 // make sure any repeat detection is flushed
61 flush();
57 // append save date to the trace. Append it directly instead of using 62 // append save date to the trace. Append it directly instead of using
58 // qDebug() as the handler might have been unregistered. 63 // qDebug() as the handler might have been unregistered.
59 debugbuffer.append("[SysTrace] saving trace at "); 64 debugbuffer.append("[SysTrace] saving trace at ");
@@ -91,11 +96,29 @@ void SysTrace::savePreviousTrace(void)
91void SysTrace::debug(QtMsgType type, const char* msg) 96void SysTrace::debug(QtMsgType type, const char* msg)
92{ 97{
93 (void)type; 98 (void)type;
94 debugbuffer.append(msg); 99 if(lastmessage != msg) {
95 debugbuffer.append("\n"); 100 lastmessage = msg;
101 flush();
102 debugbuffer.append(msg);
103 debugbuffer.append("\n");
96#if !defined(NODEBUG) 104#if !defined(NODEBUG)
97 fprintf(stderr, "%s\n", msg); 105 fprintf(stderr, "%s\n", msg);
98#endif 106#endif
107 repeat = 1;
108 }
109 else {
110 repeat++;
111 }
112}
99 113
114void SysTrace::flush(void)
115{
116 if(repeat > 1) {
117 debugbuffer.append(
118 QString(" (Last message repeasted %1 times.)\n").arg(repeat));
119#if !defined(NODEBUG)
120 fprintf(stderr, " (Last message repeated %i times.)\n", repeat);
121#endif
122 }
100} 123}
101 124