'invokeLater' like method

Before posting a RFE, I wanted to ask for opinions on idea I had recently:

As loading resources will in the GL-Thread will block rendering, I thought it would be a good idea to extend the Animator class with methods like following, well kown from the SwingUtilities:

void invokeLater(Runnable doRun)
void invokeAndWait(Runnable doRun)

This would allow loading resouces in a separate thread and call one of these methods when it comes to the OpenGL part.

I think you should be able to build those primitives out of those already provided in the library. Several people who post here have described how they have introduced “GL action” classes in their frameworks which are supported with a little additional code in their GLEventListeners.

See this Thread for an Example

thank you both for the information!

I thought more of convenience reasons to extend the Animator class with that functionality. I don’t know about the design guidelnines for jogl. I thought the com.sun.opengl.util classes are there for providing such common functionality many people use - in contrast to the javax.opengl package which aims at a minimal interface.

Anyway, I’m fine with the utility classes you referred :slight_smile:

The thing is that the Animator isn’t really the right place to put this feature since it can deal with multiple GLAutoDrawables. If we added it it should probably go in the GLAutoDrawable class or a new helper class in com.sun.opengl.util. If you can come up with a general mechanism and convenience class for this please feel free to file an RFE or Patch.

Oh, I see the problem now and I agree that the methods I mentioned shouldn’t be added to the GLAutoDrawable class, since this one is located in the javax.opengl package. I believed that an instance of the Animator class has one Thread for all GLDrawable and therefore all GLDrawable’s share one GLContext. This isn’t true, right?

The Animator does spawn one thread for all the GLAutoDrawables it manages but this doesn’t mean they all share one context. In fact, the contexts associated with those GLAutoDrawables are never made current on the Animator thread itself in the current implementation.