Archived issue #0023044
Regression: 3D views are not invalidated by some modifications of OpenGl_Structure
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".
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
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
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.
CR23044 branch contains the fix, please review
No remarks. Please test patch.
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
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