--- /dev/null
+puts "========"
+puts "0029841: Test cases from tools/dfbrowser periodically hang on Windows platform"
+puts "========"
+
+pload INSPECTOR
+
+tinspector -plugins dfbrowser
+
+for { set i 1 } { ${i} <= 10 } { incr i } {
+ tinspector -open [locate_data_file bug29743.cbf] -select 0 TNaming_UsedShapes
+ tinspector -open [locate_data_file bug29733.cbf] -select 0 TNaming_UsedShapes
+}
// purpose :
// =======================================================================
DFBrowser_Thread::DFBrowser_Thread (DFBrowser_Window* theWindow)
-: QObject (theWindow), myPostponedItem (0), myIsFinishProcessing (false)
+: QObject (theWindow), myPostponedItem (0), myIsFinishProcessing (false),
+ myIsProcessPostponed (Standard_False)
{
DFBrowser_SearchLine* aSearchLine = theWindow->GetTreeLevelLine()->GetSearchLine();
myItems.append (new DFBrowser_ThreadItemSearch(aSearchLine));
// =======================================================================
void DFBrowser_Thread::ProcessApplication()
{
+ if (!myStartedThreads.empty())
+ {
+ myIsProcessPostponed = Standard_True;
+ return;
+ }
for (int anItemId = 0, aSize = myItems.size(); anItemId < aSize; anItemId++)
startThread (myItems[anItemId]);
}
myPostponedItem->ApplyValues();
myPostponedItem = 0;
}
+
+ if (myIsProcessPostponed)
+ {
+ myIsProcessPostponed = Standard_False;
+ ProcessApplication();
+ }
}
QList<QThread*> myStartedThreads; //!< container of started threads
DFBrowser_ThreadItem* myPostponedItem; //!< currently processed item in onFinished()
bool myIsFinishProcessing; //!< blocking state if onFinished() is started but has not been finished yet
+ Standard_Boolean myIsProcessPostponed; //!< state if process application should be done by finish active thread
};