First off, sorry about the "Read More" non-links appearing in the code; that is a defect in the SourceForge engine.
Things are crunching right along, still some internals getting ironed out before we put more attention into the GL end of it.
We posted a Javadoc update, more to follow.
Some of the changes have cascaded into the Demo, so that is slightly delayed. We made some Blog posts in the meantime.
The first exciting new feature is the Event Pipeline, which is exactly parallel to the Install Pipeline, but doesn't visit any other threads. This is a top-level context with the update lock held. The entry point is Installer.event(GameObject,String[]) and you pass in the GO acting as the "event" and the ever-present route of GOs you want to "see" the event. To accept event GOs, just implement the marker interface EventCallback and be in the Locator. There is also an abstract method in GameCycle, so you can see every event before the route is processed.
Why all of this asynchronous crap?
An event is an easy way out of these situations; simply make the event GO contain the context you have, and use the route to get to the "continuation". Since the EventCallback has all of the necessary components like Locator, it is easy to gather everything together and perform any arbitrary model update.
Another thing done is TimerCallback has been slightly refactored. The timer parameters are now a separate TimerConfig structure, and the TimerCallback.setConfig configures everything, in response to Timer.register. The corresponding methods were removed. This has some efficiency benefits, as the timer service can just do a field reference instead of method calls. It also eliminates the possibility of the TimerCallback producing non-constant values for the timer parameters, and unifies the context for setting timer parameters to one method, instead of spread across 3 methods.
Another thing done is the Uninstall Pipeline, which undoes the registrations of the Install Pipeline. Other components have been wired into UnloadedCallback for route purposes; GameObjectCollection uses it to remove collection elements.
Another thing done is ContextResourceLoader auto re-loads all the (cached) GL resources on the SurfaceView.surfaceCreated callback. This is very handy, as we are finding surfaceCreated can get called quite frequently, depending on the versions of everything and how your activity is laid out.
For reference, the surfaceCreated callback is the place where your previous GL context is gone, and your shiny new GL context is ready. So everything you got cached from ResourceLoader gets its GL resources automatically re-created in the new GL context, and you can continue to hold the same reference for e.g. a Shader or a Texture.