Many views in OCC6.5.0

Hello.
I use multiple views V3d_View. If view is not empty, when calling Redraw () (either directly or during the creation of view in SetWindow (...)), second view is always crashing.

Exception occurs in OpenGl_PrimitiveArray.cxx on line 642:
glDrawElements (draw_mode, p-> num_edges, GL_UNSIGNED_INT, 0);

"Access violation reading location 0x00000000."

Everything works fine, only when there is one (first) view.
In OCC6.3.0 this problem did not exist.

sergey zaritchny's picture

Hi int,
Could you provide a short sample to reproduce the crash ?
Regards

int's picture

Test sample in the attached file. (The sample uses wxWidgets)
There are two windows (view). Use: Right click, select menu, repeat twice.
-----
Also there is another problem. When WNT_Window not associated with a view, it is not filled with the background color.

Attachments: 
int's picture

Hi Sergey,
Are you able to reproduce the crash?

sergey zaritchny's picture

Hi int,
I can't run your sample, because you are using wxWidgets (and I am not).
If you can redesign your sample on the basis of MFC or Qt I would tried it.
Regards

int's picture

Well. I made ​​a console example. Look at it please.
Usage: press any key on the console. After that, I have an error occurs.

Attachments: 
sergey zaritchny's picture

Hi int,
I checked your sample.
I don't have a crash or any other mistake.
See the attached log file and a little bit modified main.cpp (just for warning messages).
Try it in your environment.
Regards

Attachments: 
int's picture

Thank you, Sergey. I tried, but nothing changed. Probably the reason somewhere in my environment.

Pawel's picture

Hello int,

I have tested the sample from sergey and did not observe any crash.

Pawel

int's picture

Another small improvement. In TPrsStd_AISPresentation.cxx have two lines
if (! ctx.IsNull ()) ctx-> Remove (myAIS);
and
myAIS-> GetContext () -> Remove (myAIS);

I think there should be
if (! ctx.IsNull ()) ctx-> Remove (myAIS, Standard_False);
and
myAIS-> GetContext () -> Remove (myAIS, Standard_False);