Started to use Update-display-model-And-Redraw scheduling system.

First mainly for object toggle fields on well related objects, to avoid recreating the displaymode for each object toggeled by a multiselect command.
p4#: 22355
This commit is contained in:
Jacob Støren 2013-09-08 22:59:46 +02:00
parent 3a77390b0a
commit f0ddf37301
7 changed files with 33 additions and 20 deletions

View File

@ -154,6 +154,7 @@ RiaApplication::RiaApplication(int& argc, char** argv)
// The creation of a font is time consuming, so make sure you really need your own font
// instead of using the application font
m_standardFont = new cvf::FixedAtlasFont(cvf::FixedAtlasFont::STANDARD);
m_resViewUpdateTimer = NULL;
}

View File

@ -153,7 +153,7 @@ void RimCellRangeFilterCollection::fieldChangedByUi(const caf::PdmFieldHandle* c
m_reservoirView->scheduleGeometryRegen(RivReservoirViewPartMgr::RANGE_FILTERED);
m_reservoirView->scheduleGeometryRegen(RivReservoirViewPartMgr::RANGE_FILTERED_INACTIVE);
m_reservoirView->createDisplayModelAndRedraw();
m_reservoirView->scheduleCreateDisplayModelAndRedraw();
}

View File

@ -416,7 +416,7 @@ void RimProject::createDisplayModelAndRedrawAllViews()
for (size_t viewIdx = 0; viewIdx < rimCase->reservoirViews.size(); viewIdx++)
{
RimReservoirView* reservoirView = rimCase->reservoirViews[viewIdx];
reservoirView->createDisplayModelAndRedraw();
reservoirView->scheduleCreateDisplayModelAndRedraw();
}
}
}

View File

@ -311,6 +311,15 @@ void RimReservoirView::clampCurrentTimestep()
if (m_currentTimeStep < 0 ) m_currentTimeStep = 0;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimReservoirView::scheduleCreateDisplayModelAndRedraw()
{
RiaApplication::instance()->scheduleDisplayModelUpdateAndRedraw(this);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -449,13 +458,13 @@ void RimReservoirView::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
m_reservoirGridPartManager->scheduleGeometryRegen(RivReservoirViewPartMgr::RANGE_FILTERED);
m_reservoirGridPartManager->scheduleGeometryRegen(RivReservoirViewPartMgr::RANGE_FILTERED_INACTIVE);
createDisplayModelAndRedraw();
scheduleCreateDisplayModelAndRedraw();
}
else if ( changedField == &propertyFilterCollection)
{
m_reservoirGridPartManager->scheduleGeometryRegen(RivReservoirViewPartMgr::PROPERTY_FILTERED);
createDisplayModelAndRedraw();
scheduleCreateDisplayModelAndRedraw();
}
else if (changedField == &meshMode)
{
@ -496,8 +505,9 @@ void RimReservoirView::createDisplayModel()
{
if (m_viewer.isNull()) return;
// static int callCount = 0;
// qDebug() << "RimReservoirView::createDisplayModel()" << callCount++;
//static int callCount = 0;
//std::cout << "RimReservoirView::createDisplayModel() " << callCount++ << std::endl;
//RiuMainWindow::instance()->setResultInfo(QString ("RimReservoirView::createDisplayModel() ") + QString::number(callCount++));
if (!(m_reservoir && m_reservoir->reservoirData())) return;

View File

@ -158,6 +158,8 @@ public:
public:
void loadDataAndUpdate();
void createDisplayModelAndRedraw();
void scheduleCreateDisplayModelAndRedraw();
void scheduleGeometryRegen(unsigned short geometryType);
void scheduleReservoirGridGeometryRegen();
void schedulePipeGeometryRegen();

View File

@ -95,7 +95,7 @@ void RimWell::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QV
{
if (m_reservoirView)
{
m_reservoirView->createDisplayModelAndRedraw();
m_reservoirView->scheduleCreateDisplayModelAndRedraw();
}
}
else if (&showWell == changedField)
@ -103,7 +103,7 @@ void RimWell::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QV
if (m_reservoirView)
{
m_reservoirView->scheduleGeometryRegen(RivReservoirViewPartMgr::VISIBLE_WELL_CELLS);
m_reservoirView->createDisplayModelAndRedraw();
m_reservoirView->scheduleCreateDisplayModelAndRedraw();
}
}
else if (&showWellCells == changedField)
@ -111,7 +111,7 @@ void RimWell::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QV
if (m_reservoirView)
{
m_reservoirView->scheduleGeometryRegen(RivReservoirViewPartMgr::VISIBLE_WELL_CELLS);
m_reservoirView->createDisplayModelAndRedraw();
m_reservoirView->scheduleCreateDisplayModelAndRedraw();
}
}
@ -120,24 +120,24 @@ void RimWell::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QV
if (m_reservoirView)
{
m_reservoirView->scheduleGeometryRegen(RivReservoirViewPartMgr::VISIBLE_WELL_CELLS);
m_reservoirView->createDisplayModelAndRedraw();
m_reservoirView->scheduleCreateDisplayModelAndRedraw();
}
}
else if (&showWellPipes == changedField)
{
if (m_reservoirView) m_reservoirView->createDisplayModelAndRedraw();
if (m_reservoirView) m_reservoirView->scheduleCreateDisplayModelAndRedraw();
}
else if (&wellPipeColor == changedField)
{
if (m_reservoirView) m_reservoirView->createDisplayModelAndRedraw();
if (m_reservoirView) m_reservoirView->scheduleCreateDisplayModelAndRedraw();
}
else if (&pipeRadiusScaleFactor == changedField)
{
if (m_reservoirView)
{
m_reservoirView->schedulePipeGeometryRegen();
m_reservoirView->createDisplayModelAndRedraw();
m_reservoirView->scheduleCreateDisplayModelAndRedraw();
}
}
}

View File

@ -197,7 +197,7 @@ void RimWellCollection::fieldChangedByUi(const caf::PdmFieldHandle* changedField
if (m_reservoirView)
{
m_reservoirView->scheduleGeometryRegen(RivReservoirViewPartMgr::VISIBLE_WELL_CELLS);
m_reservoirView->createDisplayModelAndRedraw();
m_reservoirView->scheduleCreateDisplayModelAndRedraw();
}
}
if (&wellCellsToRangeFilterMode == changedField)
@ -205,7 +205,7 @@ void RimWellCollection::fieldChangedByUi(const caf::PdmFieldHandle* changedField
if (m_reservoirView)
{
m_reservoirView->scheduleGeometryRegen(RivReservoirViewPartMgr::VISIBLE_WELL_CELLS);
m_reservoirView->createDisplayModelAndRedraw();
m_reservoirView->scheduleCreateDisplayModelAndRedraw();
}
}
else if (&showWellCellFences == changedField)
@ -213,14 +213,14 @@ void RimWellCollection::fieldChangedByUi(const caf::PdmFieldHandle* changedField
if (m_reservoirView)
{
m_reservoirView->scheduleGeometryRegen(RivReservoirViewPartMgr::VISIBLE_WELL_CELLS);
m_reservoirView->createDisplayModelAndRedraw();
m_reservoirView->scheduleCreateDisplayModelAndRedraw();
}
}
else if (&wellCellTransparencyLevel == changedField)
{
if (m_reservoirView)
{
m_reservoirView->createDisplayModelAndRedraw();
m_reservoirView->scheduleCreateDisplayModelAndRedraw();
}
}
else if (&wellCellFenceType == changedField)
@ -228,14 +228,14 @@ void RimWellCollection::fieldChangedByUi(const caf::PdmFieldHandle* changedField
if (m_reservoirView)
{
m_reservoirView->scheduleGeometryRegen(RivReservoirViewPartMgr::VISIBLE_WELL_CELLS);
m_reservoirView->createDisplayModelAndRedraw();
m_reservoirView->scheduleCreateDisplayModelAndRedraw();
}
}
else if (&wellPipeVisibility == changedField)
{
if (m_reservoirView)
{
m_reservoirView->createDisplayModelAndRedraw();
m_reservoirView->scheduleCreateDisplayModelAndRedraw();
}
}
else if ( &pipeCrossSectionVertexCount == changedField
@ -248,7 +248,7 @@ void RimWellCollection::fieldChangedByUi(const caf::PdmFieldHandle* changedField
if (m_reservoirView)
{
m_reservoirView->schedulePipeGeometryRegen();
m_reservoirView->createDisplayModelAndRedraw();
m_reservoirView->scheduleCreateDisplayModelAndRedraw();
}
}
}