GBUI can double the input handler update

I've been having a bug that took me ages to track down.



It appears that PolledRootNode updates the application's default input handler if it has nothing else to do.



Using the code from the SimpleGame game hierarchy, you automatically get your input handler updated. So that PolledRootNode's update can mess things up if you don't want an extra update between renders.



My particular problem was with animating my controlled avatar. I've set up a class that performs animation switching in a good manner, and it received messages from the input system. Inside that class, I kept track of time every update, and had lots of conditions on which animations can be switched to which animations, sometimes using the time information. Sometimes that information was two times ahead of the animation controller, which led to a bug that I spent lots of time to track down :).



I haven't noticed any far-going implications from just removing the input handler update from PolledRootNode, so I couldn't make out why it was updated there in the first place.



Here's the diff:





Index: C:/Documents and Settings/Wizem/workspace/gbui/src/java/com/jmex/bui/PolledRootNode.java
===================================================================
--- C:/Documents and Settings/Wizem/workspace/gbui/src/java/com/jmex/bui/PolledRootNode.java   (revision 299)
+++ C:/Documents and Settings/Wizem/workspace/gbui/src/java/com/jmex/bui/PolledRootNode.java   (working copy)
@@ -150,12 +150,6 @@
         KeyInput.get().update();
         MouseInput.get().update();
 
-        // if we have no focus component, update the normal input handler
-        if (_focus == null
-            && _handler != null) {
-            _handler.update(timePerFrame);
-        }
-
         fireUpdate(_hcomponent, timePerFrame);
 
         // if our OpenGL window lost focus, clear our modifiers

interesting.  I'll go through and look at this change.  I'll have to run all of the tests and see what happens and if I can find anything that is broken due to the change.