private synchronized ViewCycleType waitForNextCycle() throws InterruptedException {
while (true) {
final long currentTimeNanos = System.nanoTime();
final ViewCycleTriggerResult triggerResult = getMasterCycleTrigger().query(currentTimeNanos);
ViewCycleEligibility cycleEligibility = triggerResult.getCycleEligibility();
if (_forceTriggerCycle) {
cycleEligibility = ViewCycleEligibility.FORCE;
_forceTriggerCycle = false;
}
if (cycleEligibility == ViewCycleEligibility.FORCE || (cycleEligibility == ViewCycleEligibility.ELIGIBLE && _cycleRequested)) {