forked from qt-creator/qt-creator
debugger: disable bulk updates
This commit is contained in:
@@ -318,6 +318,8 @@ void DebuggerManager::init()
|
|||||||
//tooltipView->setModel(m_watchHandler->model(TooltipsWatch));
|
//tooltipView->setModel(m_watchHandler->model(TooltipsWatch));
|
||||||
//qRegisterMetaType<WatchData>("Debugger::Internal::WatchData");
|
//qRegisterMetaType<WatchData>("Debugger::Internal::WatchData");
|
||||||
qRegisterMetaType<WatchData>("WatchData");
|
qRegisterMetaType<WatchData>("WatchData");
|
||||||
|
connect(m_watchHandler, SIGNAL(watchDataUpdateNeeded(WatchData)),
|
||||||
|
this, SLOT(updateWatchDataAnnounce()));
|
||||||
connect(m_watchHandler, SIGNAL(watchDataUpdateNeeded(WatchData)),
|
connect(m_watchHandler, SIGNAL(watchDataUpdateNeeded(WatchData)),
|
||||||
this, SLOT(updateWatchData(WatchData)), Qt::QueuedConnection);
|
this, SLOT(updateWatchData(WatchData)), Qt::QueuedConnection);
|
||||||
|
|
||||||
@@ -693,6 +695,12 @@ void DebuggerManager::updateWatchData(const WatchData &data)
|
|||||||
m_engine->updateWatchData(data);
|
m_engine->updateWatchData(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DebuggerManager::updateWatchDataAnnounce()
|
||||||
|
{
|
||||||
|
if (m_engine)
|
||||||
|
m_engine->updateWatchDataAnnounce();
|
||||||
|
}
|
||||||
|
|
||||||
static inline QString msgEngineNotAvailable(const char *engine)
|
static inline QString msgEngineNotAvailable(const char *engine)
|
||||||
{
|
{
|
||||||
return DebuggerManager::tr("The application requires the debugger engine '%1', which is disabled.").arg(QLatin1String(engine));
|
return DebuggerManager::tr("The application requires the debugger engine '%1', which is disabled.").arg(QLatin1String(engine));
|
||||||
|
@@ -304,6 +304,7 @@ public slots:
|
|||||||
void detachDebugger();
|
void detachDebugger();
|
||||||
|
|
||||||
void addToWatchWindow();
|
void addToWatchWindow();
|
||||||
|
void updateWatchDataAnnounce();
|
||||||
void updateWatchData(const WatchData &data);
|
void updateWatchData(const WatchData &data);
|
||||||
|
|
||||||
void sessionLoaded();
|
void sessionLoaded();
|
||||||
|
@@ -83,7 +83,7 @@ namespace Internal {
|
|||||||
using namespace Debugger::Constants;
|
using namespace Debugger::Constants;
|
||||||
|
|
||||||
//#define DEBUG_PENDING 1
|
//#define DEBUG_PENDING 1
|
||||||
#define DEBUG_SUBITEM 1
|
//#define DEBUG_SUBITEM 1
|
||||||
|
|
||||||
#if DEBUG_PENDING
|
#if DEBUG_PENDING
|
||||||
# define PENDING_DEBUG(s) qDebug() << s
|
# define PENDING_DEBUG(s) qDebug() << s
|
||||||
@@ -3127,6 +3127,13 @@ void GdbEngine::updateSubItem(const WatchData &data0)
|
|||||||
QTC_ASSERT(false, return);
|
QTC_ASSERT(false, return);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GdbEngine::updateWatchDataAnnounce()
|
||||||
|
{
|
||||||
|
// Bump requests to avoid model rebuilding during the nested
|
||||||
|
// updateWatchModel runs.
|
||||||
|
++m_pendingRequests;
|
||||||
|
}
|
||||||
|
|
||||||
void GdbEngine::updateWatchData(const WatchData &data)
|
void GdbEngine::updateWatchData(const WatchData &data)
|
||||||
{
|
{
|
||||||
//m_pendingRequests = 0;
|
//m_pendingRequests = 0;
|
||||||
@@ -3137,9 +3144,6 @@ void GdbEngine::updateWatchData(const WatchData &data)
|
|||||||
//qDebug() << data.toString();
|
//qDebug() << data.toString();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Bump requests to avoid model rebuilding during the nested
|
|
||||||
// updateWatchModel runs.
|
|
||||||
++m_pendingRequests;
|
|
||||||
updateSubItem(data);
|
updateSubItem(data);
|
||||||
//PENDING_DEBUG("INTERNAL TRIGGERING UPDATE WATCH MODEL");
|
//PENDING_DEBUG("INTERNAL TRIGGERING UPDATE WATCH MODEL");
|
||||||
--m_pendingRequests;
|
--m_pendingRequests;
|
||||||
@@ -3449,7 +3453,7 @@ void GdbEngine::handleChildren(const WatchData &data0, const GdbMi &item,
|
|||||||
WatchData childtemplate;
|
WatchData childtemplate;
|
||||||
setWatchDataType(childtemplate, item.findChild("childtype"));
|
setWatchDataType(childtemplate, item.findChild("childtype"));
|
||||||
setWatchDataChildCount(childtemplate, item.findChild("childnumchild"));
|
setWatchDataChildCount(childtemplate, item.findChild("childnumchild"));
|
||||||
qDebug() << "CHILD TEMPLATE:" << childtemplate.toString();
|
//qDebug() << "CHILD TEMPLATE:" << childtemplate.toString();
|
||||||
|
|
||||||
int i = 0;
|
int i = 0;
|
||||||
foreach (GdbMi child, children.children()) {
|
foreach (GdbMi child, children.children()) {
|
||||||
|
@@ -332,6 +332,7 @@ private:
|
|||||||
void updateSubItem(const WatchData &data);
|
void updateSubItem(const WatchData &data);
|
||||||
|
|
||||||
void updateWatchData(const WatchData &data);
|
void updateWatchData(const WatchData &data);
|
||||||
|
void updateWatchDataAnnounce();
|
||||||
void rebuildModel();
|
void rebuildModel();
|
||||||
|
|
||||||
void insertData(const WatchData &data);
|
void insertData(const WatchData &data);
|
||||||
|
@@ -63,6 +63,7 @@ public:
|
|||||||
virtual bool startDebugger(const QSharedPointer<DebuggerStartParameters> &startParameters) = 0;
|
virtual bool startDebugger(const QSharedPointer<DebuggerStartParameters> &startParameters) = 0;
|
||||||
virtual void exitDebugger() = 0;
|
virtual void exitDebugger() = 0;
|
||||||
virtual void detachDebugger() {}
|
virtual void detachDebugger() {}
|
||||||
|
virtual void updateWatchDataAnnounce() {}
|
||||||
virtual void updateWatchData(const WatchData &data) = 0;
|
virtual void updateWatchData(const WatchData &data) = 0;
|
||||||
|
|
||||||
virtual void stepExec() = 0;
|
virtual void stepExec() = 0;
|
||||||
|
@@ -806,6 +806,8 @@ static int findInsertPosition(const QList<WatchItem *> &list, const WatchItem *i
|
|||||||
void WatchModel::insertData(const WatchData &data)
|
void WatchModel::insertData(const WatchData &data)
|
||||||
{
|
{
|
||||||
// qDebug() << "WMI:" << data.toString();
|
// qDebug() << "WMI:" << data.toString();
|
||||||
|
static int bulk = 0;
|
||||||
|
//qDebug() << "SINGLE: " << ++bulk << data.toString();
|
||||||
QTC_ASSERT(!data.iname.isEmpty(), return);
|
QTC_ASSERT(!data.iname.isEmpty(), return);
|
||||||
WatchItem *parent = findItem(parentName(data.iname), m_root);
|
WatchItem *parent = findItem(parentName(data.iname), m_root);
|
||||||
if (!parent) {
|
if (!parent) {
|
||||||
@@ -844,8 +846,9 @@ void WatchModel::insertData(const WatchData &data)
|
|||||||
void WatchModel::insertBulkData(const QList<WatchData> &list)
|
void WatchModel::insertBulkData(const QList<WatchData> &list)
|
||||||
{
|
{
|
||||||
//qDebug() << "WMI:" << list.toString();
|
//qDebug() << "WMI:" << list.toString();
|
||||||
|
static int bulk = 0;
|
||||||
//foreach (const WatchItem &data, list)
|
//foreach (const WatchItem &data, list)
|
||||||
// qDebug() << data.toString();
|
// qDebug() << "BULK: " << ++bulk << data.toString();
|
||||||
QTC_ASSERT(!list.isEmpty(), return);
|
QTC_ASSERT(!list.isEmpty(), return);
|
||||||
QString parentIName = parentName(list.at(0).iname);
|
QString parentIName = parentName(list.at(0).iname);
|
||||||
WatchItem *parent = findItem(parentIName, m_root);
|
WatchItem *parent = findItem(parentIName, m_root);
|
||||||
@@ -1001,6 +1004,12 @@ void WatchHandler::insertData(const WatchData &data)
|
|||||||
// bulk-insertion
|
// bulk-insertion
|
||||||
void WatchHandler::insertBulkData(const QList<WatchData> &list)
|
void WatchHandler::insertBulkData(const QList<WatchData> &list)
|
||||||
{
|
{
|
||||||
|
#if 1
|
||||||
|
foreach (const WatchItem &data, list)
|
||||||
|
insertData(data);
|
||||||
|
return;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (list.isEmpty())
|
if (list.isEmpty())
|
||||||
return;
|
return;
|
||||||
QMap<QString, QList<WatchData> > hash;
|
QMap<QString, QList<WatchData> > hash;
|
||||||
|
Reference in New Issue
Block a user