fix(thread): Search result is incorrect because of thread quit.

Description: 修复由于线程退出导致的搜索结果错误问题

Log: 修复由于线程退出导致的搜索结果错误问题
Bug: --
This commit is contained in:
zhangjiaping 2021-01-13 15:04:37 +08:00
parent d48aebd08b
commit e758f9e03d
2 changed files with 19 additions and 18 deletions

View File

@ -22,9 +22,9 @@ SearchResult::~SearchResult()
void SearchResult::run() void SearchResult::run()
{ {
QTimer * m_timer = new QTimer; QTimer * m_timer = new QTimer;
m_timer->setInterval(3000);
int emptyLists = 0; int emptyLists = 0;
while(!isInterruptionRequested()) { while(!isInterruptionRequested()) {
qWarning()<<"--------------------";
emptyLists = 0; emptyLists = 0;
m_mainwindow->m_searcher->m_mutex1.lock(); m_mainwindow->m_searcher->m_mutex1.lock();
if (!m_mainwindow->m_search_result_file->isEmpty()) { if (!m_mainwindow->m_search_result_file->isEmpty()) {
@ -44,7 +44,7 @@ void SearchResult::run()
} }
m_mainwindow->m_searcher->m_mutex3.lock(); m_mainwindow->m_searcher->m_mutex3.lock();
if (!m_mainwindow->m_search_result_content->isEmpty()) if (!m_mainwindow->m_search_result_content->isEmpty())
qDebug() << m_mainwindow->m_search_result_content->head(); // qDebug() << m_mainwindow->m_search_result_content->head();
if (!m_mainwindow->m_search_result_content->isEmpty()) { if (!m_mainwindow->m_search_result_content->isEmpty()) {
Q_EMIT this->searchResultContent(m_mainwindow->m_search_result_content->dequeue()); Q_EMIT this->searchResultContent(m_mainwindow->m_search_result_content->dequeue());
m_mainwindow->m_searcher->m_mutex3.unlock(); m_mainwindow->m_searcher->m_mutex3.unlock();

View File

@ -327,23 +327,24 @@ QWidget* QtSingleApplication::activationWindow() const
*/ */
void QtSingleApplication::activateWindow() void QtSingleApplication::activateWindow()
{ {
if (actWin) { //单例置顶策略由于bootOptionsFilter in mainwindow自带置顶策略故注掉此处
if(this->applicationState() & Qt::ApplicationInactive) // if (actWin) {
{ // if(this->applicationState() & Qt::ApplicationInactive)
MainWindow* w=qobject_cast<MainWindow*>(actWin); // {
// w->loadMainWindow(); // MainWindow* w=qobject_cast<MainWindow*>(actWin);
w->clearSearchResult(); //// w->loadMainWindow();
actWin->setWindowState(actWin->windowState() & ~Qt::WindowMinimized); // w->clearSearchResult();
actWin->raise(); // actWin->setWindowState(actWin->windowState() & ~Qt::WindowMinimized);
actWin->showNormal(); // actWin->raise();
actWin->activateWindow(); // actWin->showNormal();
} // actWin->activateWindow();
else { // }
actWin->setWindowState(actWin->windowState() & Qt::WindowMinimized); // else {
actWin->hide(); // actWin->setWindowState(actWin->windowState() & Qt::WindowMinimized);
} // actWin->hide();
// }
} // }
} }