Performance updates (#9082)

* Avoid creation of curve legend widgets during construction of a multi plot
* Make sure default z-value is correct to avoid expensive Qwt updates
* Avoid duplicate plot updates
* Do not create internal Qwt legend by default
* RFT import: Avoid expensive method throwing exception if no data is found
This commit is contained in:
Magne Sjaastad
2022-06-24 16:16:46 +02:00
committed by GitHub
parent 5078f4072f
commit b706192ea3
16 changed files with 133 additions and 69 deletions

View File

@@ -107,12 +107,10 @@ void RiaPlotWindowRedrawScheduler::clearAllScheduledUpdates()
void RiaPlotWindowRedrawScheduler::performScheduledUpdatesAndReplots()
{
std::map<QPointer<RiuMultiPlotBook>, RiaDefines::MultiPlotPageUpdateType> plotBooksToUpdate;
std::set<QPointer<RiuPlotWidget>> plotWidgetsToReplot;
std::map<QPointer<RiuMultiPlotPage>, RiaDefines::MultiPlotPageUpdateType> pagesToUpdate;
pagesToUpdate.swap( m_plotPagesToUpdate );
plotBooksToUpdate.swap( m_plotBooksToUpdate );
plotWidgetsToReplot.swap( m_plotWidgetsToReplot );
for ( auto& [plotBook, updateType] : plotBooksToUpdate )
{
@@ -135,6 +133,12 @@ void RiaPlotWindowRedrawScheduler::performScheduledUpdatesAndReplots()
page->performUpdate( updateType );
}
// PERFORMANCE NOTE
// As the book and page updates can trigger widget updates, make sure to get the list of widgets to replot after
// these updates
std::set<QPointer<RiuPlotWidget>> plotWidgetsToReplot;
plotWidgetsToReplot.swap( m_plotWidgetsToReplot );
for ( const QPointer<RiuPlotWidget>& plot : plotWidgetsToReplot )
{
if ( !plot.isNull() )