I’m developing an application based on OCC which is a 3D modeler with some functionalities dedicated to naval architecture. My UI is quite standard and composed of 4 views (top, right…), all connected to the same Viewer… The views are hosted in a slightly customized MFC splitter tested several times with genuine MFC views…
I started this project 2 years ago with an OCC 4.X release and, until now, succeeded in moving the project to 5.1 then 5.2 release without any troubles.
Over the past 2 years the developments were carried on various configurations at the same time: OS Win 2K and Win XP, VC++ 6 SP5/SP6, Desktop/ATI_RADEON_9600XT, Laptop/NVidia, so lets say the code is quite bug free…
Going straight to the point, I would said that the bug occurs when there are more than 2 OCC views opened at the same time, each one displaying at least one object. The bug seems to be linked the refreshing of the views, i.e. when resizing a splitter or when highlighting an object in a view which has not the focus…
In order to identify the bug, I used MyApp (of course) and the sample app Viewer 3d with 2 docs open at the same time. The 2 docs give 2 views (even if these 2 views are linked to different viewer it's quite similar to my App)... So here are the results of the tests.
> Desktop Win2K/ATI_RADEON_9600XT:
- Viewer 3D : can’t detect any troubles in release or debug mode when several docs (then several views) are open at the same time.
- MyApp : in debug and release I get the same trouble. At the beginning everything is fine, then after playing a little with the splitter (resizing the views), the application starts to slow down, selection highlighting is not synchro in all the views (one views refreshed after one other), rotating is painful and at the end the app freezes…
>Laptop Dell WinXP SP2 /Intel 915GM/GMS, 910GMLExpress:
- Viewer 3D : can’t detect any troubles in release mode when several doc (then several views) are open at the same time. But, in debug mode the app produce a Userbreak point in the IGLCD32 dll (Intel OGL dll) with the following message in VStudio : HEAP[Viewer3d.exe]: HEAP: Free Heap block e89f530 modified at e89f540 after it was freed. It always occurs when the mouse, starting from the view which has the focus, moves over an object in the second and unfocused (no click done) view. My opinion is that it breaks when trying to update the unfocused views due to the highlight option… In order verify whether the trouble comes from the selection process I put into comments the call to GetDocument()->MoveEvent. I reproduced the bug only when resizing the views (of course!)…
- MyApp : unable to start my app in debug mode, the app breaks in the IGLCD32 dll with the heap at the first display. In release mode, the App starts but rapidly freezes after having played (a little) with the splitter and view trsf functionalities (rotate, zoom…).
I updated all the video cards drivers without any success.
I hope this information will be useful to both community and OCC team and keep trying to sort this thing out.
Best Regards.
Thierry Lacombe