change order of determineMode() checks

This commit is contained in:
Todd Herbert 2024-03-10 03:38:39 +13:00
parent efd818fe90
commit 95b6f27d2a
2 changed files with 18 additions and 18 deletions

View File

@ -130,11 +130,11 @@ bool EInkDynamicDisplay::determineMode()
// Once mode determined, any remaining checks will bypass // Once mode determined, any remaining checks will bypass
checkCosmetic(); checkCosmetic();
checkDemandingFast(); checkDemandingFast();
checkConsecutiveFastRefreshes();
#ifdef EINK_LIMIT_GHOSTING_PX #ifdef EINK_LIMIT_GHOSTING_PX
checkExcessiveGhosting(); checkExcessiveGhosting();
#endif #endif
checkFrameMatchesPrevious(); checkFrameMatchesPrevious();
checkConsecutiveFastRefreshes();
checkFastRequested(); checkFastRequested();
if (refresh == UNSPECIFIED) if (refresh == UNSPECIFIED)
@ -244,21 +244,6 @@ void EInkDynamicDisplay::checkDemandingFast()
} }
} }
// Have too many fast-refreshes occured consecutively, since last full refresh?
void EInkDynamicDisplay::checkConsecutiveFastRefreshes()
{
// If a decision was already reached, don't run the check
if (refresh != UNSPECIFIED)
return;
// If too many FAST refreshes consecutively - force a FULL refresh
if (fastRefreshCount >= EINK_LIMIT_FASTREFRESH) {
refresh = FULL;
reason = EXCEEDED_LIMIT_FASTREFRESH;
LOG_DEBUG("refresh=FULL, reason=EXCEEDED_LIMIT_FASTREFRESH\n");
}
}
// Does the new frame match the currently displayed image? // Does the new frame match the currently displayed image?
void EInkDynamicDisplay::checkFrameMatchesPrevious() void EInkDynamicDisplay::checkFrameMatchesPrevious()
{ {
@ -283,7 +268,22 @@ void EInkDynamicDisplay::checkFrameMatchesPrevious()
// Not redrawn, not COSMETIC, not DEMAND_FAST // Not redrawn, not COSMETIC, not DEMAND_FAST
refresh = SKIPPED; refresh = SKIPPED;
reason = FRAME_MATCHED_PREVIOUS; reason = FRAME_MATCHED_PREVIOUS;
LOG_DEBUG("refresh=SKIPPED, reason=FRAME_MATCHED_PREVIOUS\n"); LOG_DEBUG("refresh=SKIPPED, reason=FRAME_MATCHED_PREVIOUS, frameFlags=0x%x\n", frameFlags);
}
// Have too many fast-refreshes occured consecutively, since last full refresh?
void EInkDynamicDisplay::checkConsecutiveFastRefreshes()
{
// If a decision was already reached, don't run the check
if (refresh != UNSPECIFIED)
return;
// If too many FAST refreshes consecutively - force a FULL refresh
if (fastRefreshCount >= EINK_LIMIT_FASTREFRESH) {
refresh = FULL;
reason = EXCEEDED_LIMIT_FASTREFRESH;
LOG_DEBUG("refresh=FULL, reason=EXCEEDED_LIMIT_FASTREFRESH\n");
}
} }
// No objections, we can perform fast-refresh, if desired // No objections, we can perform fast-refresh, if desired

View File

@ -73,8 +73,8 @@ class EInkDynamicDisplay : public EInkDisplay
void checkRateLimiting(); // Is this frame too soon? void checkRateLimiting(); // Is this frame too soon?
void checkCosmetic(); // Was the COSMETIC flag set? void checkCosmetic(); // Was the COSMETIC flag set?
void checkDemandingFast(); // Was the DEMAND_FAST flag set? void checkDemandingFast(); // Was the DEMAND_FAST flag set?
void checkConsecutiveFastRefreshes(); // Too many fast-refreshes consecutively?
void checkFrameMatchesPrevious(); // Does the new frame match the existing display image? void checkFrameMatchesPrevious(); // Does the new frame match the existing display image?
void checkConsecutiveFastRefreshes(); // Too many fast-refreshes consecutively?
void checkFastRequested(); // Was the flag set for RESPONSIVE, or only BACKGROUND? void checkFastRequested(); // Was the flag set for RESPONSIVE, or only BACKGROUND?
void resetRateLimiting(); // Set previousRunMs - this now counts as an update, for rate-limiting void resetRateLimiting(); // Set previousRunMs - this now counts as an update, for rate-limiting