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

View File

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