DiscussionsIssue archiveOCCT:Visualization

Archived issue #0023044

Regression: 3D views are not invalidated by some modifications of OpenGl_Structure

Open CASCADEOCCT:Visualizationclosed3 public notes

Search issues

Description

Some modifications of OpenGl_Structure do not cause invalidation of the views that contain this structure.

This is a regression with respect to OCCT 6.5.2, where TsmInitUpdateState() was called each time when TsmOpenStructure() was called.

The problem has been discovered for OpenGl_GraphicDriver::TransformStructure() method called as a result of AIS_InteractiveContext::SetLocation(iobj, location) call. The visible effect is that calling V3d_View::Update() has no effect after changing the object's location.

The quickest solution is to identify all cases when TsmInitUpdateState() was called in OCCT 6.5.2 and call OpenGl_GraphicDriver::InvalidateAllWorkspaces() accordingly.

The final decision is to make 3D view redrawing unconditional, thus "update" procedure becomes identical to "redraw".

Steps to reproduce

pload ALL
vinit
vanimation CrankArmFile CylinderHeadFile PropellerFile EngineBlockFile

Additional information

Conditional updates of V3d_View instances are no more supported. Update() methods in V3d_View and V3d_Viewer classes are now deprecated and equivalent to Redraw() methods. The latter should be used instead.

If an application expects series of view update events while the 3D scene content is not changed, and multiple redrawing of the scene might have significant negative impact on application performance, then the application itself should ensure necessary protection.

Modified files:

V3d package

  V3d_View.cdl
    V3d_View::Update() method documentation changed

  V3d_Viewer.cdl
    V3d_Viewer::Update() method documentation changed

Public activity

3 archived notes

Participants are labeled by their role within this record.

01Commenter 1
CR23044 branch contains the fix, please review
02Commenter 2
No remarks. Please test patch.
03Commenter 3
Dear Commenter 1,
     Workbench KAS:dev:mkv-23044-occt was created from git branch CR23044 (and mkv-23044-products from svn trunk) and compiled on Linux platform.
   
     There are not regressions in mkv-23044-products regarding to KAS:dev:products-20120326-opt
     
     See results in /QADisk/occttests/results/KAS/dev/mkv-23044-products_29032012/lin
     See reference results in /QADisk/occttests/results/KAS/dev/products-20120326-opt_26032012/lin
     See test cases in /QADisk/occttests/tests/ED

Related records