fix: prevent successive incline or decline to trigger onFallback in PerformanceMonitor #1791
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Why
The flipflops is triggered by the successive call of onIncline or successive call of onDecline, which leads to the call of onFallback.
In particular, if you have successive improvement in performances that leads to the call of your last resort optimization in the onFallback. For example, you ask for the Effects in the EffectComposer to be better in onIncline and to disable totally the Effects in the onFallback, you see improvements, improvements, then you default fallback with no effects which defeat the purpose of the PerformanceMonitor.
resolves #1739
What
I have added a
lastChange
variable that keeps track of the last change to see if it was a decline before the incline or vice versa, which is what consist in a flipflop. It increments the value offlipped
only if it switch back and forth between incline and decline, which is the instability we are searching in the first place.Checklist