Hi Rob,
In a situation like this, you can bracket all the calls
that will trigger a Display update between calls to
disableAction() and enableAction(), as follows:
display.disableAction();
. . . // calls that trigger display to update
display.enableAction();
See visad/examples/SatDisplay.java for an example.
Good luck,
Bill
On Thu, 25 Aug 2005, Rob Hackett wrote:
> I am writing an application which plots many different types of data
> onto the Display at once. I do not suffer from any real performance issues
> until I render a satellite image extracted via the AreaAdapter to the
> display, using a ScalarMap with a DisplayRealType of Display.RGBA. Once the
> image has been rendered (which in itself takes several seconds), the
> application begins to suffer from severe performance problems, particularly
> when adding new DataReferences. Even adding simple data like a Text object
> takes about 20 seconds, more complicated operations such as drawing a front
> with the FrontDrawer become virtually unusable.
>
> I think that what is happening is that by adding a DataReference I am
> triggering an event which causes the Display to redraw all it's data,
> including the satellite image, which then takes several seconds to redraw.
> This problem is then compounded by the fact that more than one event, will
> cause the image to be rendered several times, bringing everything else to a
> standstill.
>
> Is there some way of temporarily delaying the replotting of the image
> until all other activity from an event, or user interaction has ceased. This
> way the replotting could be performed without holding anything else up?
>
> Alternatively, is this caused by something else that I haven't
> considered?
>
> thanks,
>
> Rob
>
>