[quote]I don’t want my game state dependent of the frame rate, i.e. logic updates should be called wher/whenever I want, outside of this &@#% display(GLDrawable drawable) method >:( For example, in a logic update, or simply its onLoad() method an entity may have to load a texture, or an other asset requiring an access to OpenGL. Until then I felt compelled to dispatch the msgOnLoad message in the display method. But it does not please me at all 
[/quote]
If you want to make your game logic update rate independent from your frame rate, it sounds like you will have at least two threads involved, one performing your game updates and one performing rendering based on the state updates of that thread. If you also want to be able to perform OpenGL tasks from the game update thread, you will either need to mediate access to the OpenGL context being used by the rendering thread, or create a new GLDrawable for your game update thread that shares textures and display lists with the rendering thread’s GLDrawable. In the game update thread’s GLDrawable you could call GLDrawable.display() once, never return from that method, and use the GL object at will knowing that the context is current and will never be freed.
There are a lot of alternative ways you could structure your application without using multithreading. One way would be to keep manual control over your main loop and call GLDrawable.display() on demand when you want to perform a render. This does have the disadvantage that you would need to defer texture loads until you called display(). However, if you’re going to use the single-threaded approach, it seems to me that you might as well just have your GLEventListener’s display() method call the rest of your application’s framework, and you would have the GL context available at all times. You could probably make a small adapter class to do this without impacting the rest of your framework.