diff --git a/retroshare-gui/src/gui/ForumsDialog.cpp b/retroshare-gui/src/gui/ForumsDialog.cpp index 0912ae407..996b69bd6 100644 --- a/retroshare-gui/src/gui/ForumsDialog.cpp +++ b/retroshare-gui/src/gui/ForumsDialog.cpp @@ -134,6 +134,8 @@ ForumsDialog::ForumsDialog(QWidget *parent) m_bProcessSettings = false; subscribeFlags = 0; + mFillthreadCount = 0; + connect( ui.forumTreeWidget, SIGNAL( treeCustomContextMenuRequested( QPoint ) ), this, SLOT( forumListCustomPopupMenu( QPoint ) ) ); connect( ui.threadTreeWidget, SIGNAL( customContextMenuRequested( QPoint ) ), this, SLOT( threadListCustomPopupMenu( QPoint ) ) ); @@ -465,7 +467,9 @@ void ForumsDialog::updateDisplay() { std::list forumIds; std::list::iterator it; - if (!rsForums) + + // suspend access to forum while thread is running + if (!rsForums || (mFillthreadCount != 0)) return; if (rsForums->forumsChanged(forumIds)) @@ -770,9 +774,11 @@ void ForumsDialog::fillThreadFinished() thread = NULL; } + mFillthreadCount -= 1; #ifdef DEBUG_FORUMS std::cerr << "ForumsDialog::fillThreadFinished done" << std::endl; #endif + } void ForumsDialog::fillThreadProgress(int current, int count) @@ -866,6 +872,8 @@ void ForumsDialog::insertThreads() std::cerr << "ForumsDialog::insertThreads() Start fill thread" << std::endl; #endif + mFillthreadCount +=1; + // start thread fillThread->start(); } diff --git a/retroshare-gui/src/gui/ForumsDialog.h b/retroshare-gui/src/gui/ForumsDialog.h index 8b9074f0e..9a6850d87 100644 --- a/retroshare-gui/src/gui/ForumsDialog.h +++ b/retroshare-gui/src/gui/ForumsDialog.h @@ -136,6 +136,7 @@ private: QFont m_ForumNameFont; int lastViewType; std::string lastForumID; + int mFillthreadCount; ForumsFillThread *fillThread;