The idea is not to re-create display lists for drawing trihedron arrows each
time a 3D view is updated.
Instead, a map-like behavior could be implemented (unfortunately, available
object-oriented map implementations cannot be re-used in C code of OpenGl
package), with an OpenGL rendering context (GLRC) ID being a key, and a
structure containing current geometrical trihedron parameters and current
display list ID(s) being a data.

When some of trihedron's geometrical parameters changes for the given GLRC,
corresponding display lists could be replaced with new ones, and old ones
deleted.

During view updates, existing display lists could be re-used, with help of
their IDs taken from the map.

On 3D view destruction, it is necessary to take care of removing trihedron data
for relevant GLRC.

Original posting:

-----------------------
Sangsu Lee:

To OCC developers,

I think this code can be improved.
If we make the display lists only when it is made at first or user redefine the
triedron, and just call the lists when redrawing, and destroy it in the
v3d_viewer's destructor, it would be more fast and efficient.

Currently, it is always recreated and deleted again and it is not so efficient.

please close the issue - original problem in description does not exist anymore.
Since 0024381 trihedron uses OpenGl_PrimitiveArray for rendering primitives, so resources are now re-used without display lists.