From e37bf9fd12f692c65063ac35107f4bc582e32c30 Mon Sep 17 00:00:00 2001 From: Zack Rusin Date: Sun, 24 Apr 2011 15:54:33 -0400 Subject: [PATCH] Don't generate the search string on thousands of hidden calls. ApiTraceCall::filterText genrates a string composed of the name plus all the arguments to use when searching, but thousands of calls are hidden by our default filter model which means that we were generating megs of strings data without ever using them. the patch fixes that --- gui/mainwindow.cpp | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/gui/mainwindow.cpp b/gui/mainwindow.cpp index 54fe041..b258df7 100644 --- a/gui/mainwindow.cpp +++ b/gui/mainwindow.cpp @@ -795,7 +795,8 @@ void MainWindow::slotSearch() m_searchWidget->show(); } -void MainWindow::slotSearchNext(const QString &str, Qt::CaseSensitivity sensitivity) +void MainWindow::slotSearchNext(const QString &str, + Qt::CaseSensitivity sensitivity) { QModelIndex index = m_ui.callView->currentIndex(); ApiTraceEvent *event = 0; @@ -830,12 +831,12 @@ void MainWindow::slotSearchNext(const QString &str, Qt::CaseSensitivity sensitiv for (int i = callNum + 1; i < calls.count(); ++i) { ApiTraceCall *testCall = calls[i]; - QString txt = testCall->filterText(); - if (txt.contains(str, sensitivity)) { - QModelIndex index = m_proxyModel->indexForCall(testCall); - /* if it's not valid it means that the proxy model has already - * filtered it out */ - if (index.isValid()) { + QModelIndex index = m_proxyModel->indexForCall(testCall); + /* if it's not valid it means that the proxy model has already + * filtered it out */ + if (index.isValid()) { + QString txt = testCall->filterText(); + if (txt.contains(str, sensitivity)) { m_ui.callView->setCurrentIndex(index); m_searchWidget->setFound(true); return; @@ -845,7 +846,8 @@ void MainWindow::slotSearchNext(const QString &str, Qt::CaseSensitivity sensitiv m_searchWidget->setFound(false); } -void MainWindow::slotSearchPrev(const QString &str, Qt::CaseSensitivity sensitivity) +void MainWindow::slotSearchPrev(const QString &str, + Qt::CaseSensitivity sensitivity) { QModelIndex index = m_ui.callView->currentIndex(); ApiTraceEvent *event = 0; @@ -880,12 +882,12 @@ void MainWindow::slotSearchPrev(const QString &str, Qt::CaseSensitivity sensitiv for (int i = callNum - 1; i >= 0; --i) { ApiTraceCall *testCall = calls[i]; - QString txt = testCall->filterText(); - if (txt.contains(str, sensitivity)) { - QModelIndex index = m_proxyModel->indexForCall(testCall); - /* if it's not valid it means that the proxy model has already - * filtered it out */ - if (index.isValid()) { + QModelIndex index = m_proxyModel->indexForCall(testCall); + /* if it's not valid it means that the proxy model has already + * filtered it out */ + if (index.isValid()) { + QString txt = testCall->filterText(); + if (txt.contains(str, sensitivity)) { m_ui.callView->setCurrentIndex(index); m_searchWidget->setFound(true); return; -- 2.43.0