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 boolean has_polled;
private float value;
private float event_value;
@ -98,9 +99,21 @@ public abstract class AbstractComponent implements Component {
* @return 0.0f by default, can be overridden
*/
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;
}
final void resetHasPolled() {
has_polled = false;
}
final void setPollData(float value) {
this.value = value;
}

View file

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