mirror of
https://bitbucket.org/smil3y/kdelibs.git
synced 2025-02-24 02:42:48 +00:00
kdeui: fix KDebugger events log thread-safety issue
Signed-off-by: Ivailo Monev <xakepa10@gmail.com>
This commit is contained in:
parent
3d5c97fa56
commit
307e136a13
1 changed files with 17 additions and 11 deletions
|
@ -37,6 +37,7 @@
|
||||||
#include <QHeaderView>
|
#include <QHeaderView>
|
||||||
#include <QMetaProperty>
|
#include <QMetaProperty>
|
||||||
#include <QElapsedTimer>
|
#include <QElapsedTimer>
|
||||||
|
#include <QMutex>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
Q_DECLARE_METATYPE(QObject*);
|
Q_DECLARE_METATYPE(QObject*);
|
||||||
|
@ -587,7 +588,7 @@ void KDebuggerFuzzer::run()
|
||||||
QString eventmessage = QLatin1String("Sending event - ");
|
QString eventmessage = QLatin1String("Sending event - ");
|
||||||
eventmessage.append(kEventString(&fuzzevent));
|
eventmessage.append(kEventString(&fuzzevent));
|
||||||
emit message(eventmessage);
|
emit message(eventmessage);
|
||||||
//QApplication::sendEvent(m_object, &fuzzevent);
|
QApplication::sendEvent(m_object.data(), &fuzzevent);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: set a random property to random value
|
// TODO: set a random property to random value
|
||||||
|
@ -638,6 +639,7 @@ private:
|
||||||
|
|
||||||
QPointer<QObject> m_object;
|
QPointer<QObject> m_object;
|
||||||
QMap<QObject*,QPointer<QObject>> m_objects;
|
QMap<QObject*,QPointer<QObject>> m_objects;
|
||||||
|
QMutex m_eventsmutex;
|
||||||
QTimer* m_fuzzchecktimer;
|
QTimer* m_fuzzchecktimer;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -684,15 +686,18 @@ void KDebuggerPrivate::addObject(QObject *object, QTreeWidgetItem *parentitem)
|
||||||
void KDebuggerPrivate::slotCheckFuzzState()
|
void KDebuggerPrivate::slotCheckFuzzState()
|
||||||
{
|
{
|
||||||
if (fuzzpool->activeThreadCount() > 0) {
|
if (fuzzpool->activeThreadCount() > 0) {
|
||||||
objectssearchline->setEnabled(false);
|
if (!m_fuzzchecktimer->isActive()) {
|
||||||
objectswidget->setEnabled(false);
|
m_fuzzchecktimer->start();
|
||||||
propertieswidget->setEnabled(false);
|
objectssearchline->setEnabled(false);
|
||||||
threadfuzzbox->setEnabled(false);
|
objectswidget->setEnabled(false);
|
||||||
eventfuzzbox->setEnabled(false);
|
propertieswidget->setEnabled(false);
|
||||||
propertyfuzzbox->setEnabled(false);
|
threadfuzzbox->setEnabled(false);
|
||||||
durationfuzzedit->setEnabled(false);
|
eventfuzzbox->setEnabled(false);
|
||||||
fuzzbutton->setText(i18n("Stop"));
|
propertyfuzzbox->setEnabled(false);
|
||||||
fuzzbutton->setIcon(KIcon("process-stop"));
|
durationfuzzedit->setEnabled(false);
|
||||||
|
fuzzbutton->setText(i18n("Stop"));
|
||||||
|
fuzzbutton->setIcon(KIcon("process-stop"));
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
objectssearchline->setEnabled(true);
|
objectssearchline->setEnabled(true);
|
||||||
objectswidget->setEnabled(true);
|
objectswidget->setEnabled(true);
|
||||||
|
@ -829,6 +834,7 @@ bool KDebuggerPrivate::eventFilter(QObject *object, QEvent *event)
|
||||||
QString eventline = kObjectString(object);
|
QString eventline = kObjectString(object);
|
||||||
eventline.append(QLatin1String(" - "));
|
eventline.append(QLatin1String(" - "));
|
||||||
eventline.append(kEventString(event));
|
eventline.append(kEventString(event));
|
||||||
|
QMutexLocker locker(&m_eventsmutex);
|
||||||
eventsedit->append(eventline);
|
eventsedit->append(eventline);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -936,7 +942,7 @@ void KDebuggerPrivate::slotFuzzReleased()
|
||||||
fuzzpool->start(fuzzer);
|
fuzzpool->start(fuzzer);
|
||||||
}
|
}
|
||||||
|
|
||||||
m_fuzzchecktimer->start();
|
slotCheckFuzzState();
|
||||||
}
|
}
|
||||||
|
|
||||||
void KDebuggerPrivate::slotMessage(const QString &message)
|
void KDebuggerPrivate::slotMessage(const QString &message)
|
||||||
|
|
Loading…
Add table
Reference in a new issue