Made polling of absolute Components lazy to avoid performance problems with keyboards on mac os x

This commit is contained in:
elias 2007-04-19 11:59:23 +00:00
parent 7716494aee
commit 1bfb2dc3c0
2 changed files with 15 additions and 2 deletions

View file

@ -52,6 +52,7 @@ public abstract class AbstractComponent implements Component {
private final Identifier id; private final Identifier id;
private boolean has_polled;
private float value; private float value;
private float event_value; private float event_value;
@ -98,9 +99,21 @@ public abstract class AbstractComponent implements Component {
* @return 0.0f by default, can be overridden * @return 0.0f by default, can be overridden
*/ */
public final float getPollData() { public final float getPollData() {
if (!has_polled && !isRelative()) {
has_polled = true;
try {
setPollData(poll());
} catch (IOException e) {
ControllerEnvironment.log("Failed to poll component: " + e);
}
}
return value; return value;
} }
final void resetHasPolled() {
has_polled = false;
}
final void setPollData(float value) { final void setPollData(float value) {
this.value = value; this.value = value;
} }

View file

@ -212,8 +212,8 @@ public abstract class AbstractController implements Controller {
if (component.isRelative()) { if (component.isRelative()) {
component.setPollData(0); component.setPollData(0);
} else { } else {
float value = component.poll(); // Let the component poll itself lazily
component.setPollData(value); component.resetHasPolled();
} }
} }
while (getNextDeviceEvent(event)) { while (getNextDeviceEvent(event)) {