diff --git a/yoga/Yoga.cpp b/yoga/Yoga.cpp index 27072c1c..94d9a602 100644 --- a/yoga/Yoga.cpp +++ b/yoga/Yoga.cpp @@ -28,6 +28,15 @@ __forceinline const float fmaxf(const float a, const float b) { using namespace facebook::yoga; using detail::Log; +namespace { +size_t usedMeasureCacheEntries = YG_MAX_CACHED_RESULT_COUNT; +} + +void YGSetUsedCachedEntries(size_t n) { + usedMeasureCacheEntries = + n == 0 || n > YG_MAX_CACHED_RESULT_COUNT ? YG_MAX_CACHED_RESULT_COUNT : n; +} + #ifdef ANDROID static int YGAndroidLog( const YGConfigRef config, @@ -3871,7 +3880,7 @@ bool YGLayoutNodeInternal( layoutMarkerData.maxMeasureCache = layout->nextCachedMeasurementsIndex + 1; } - if (layout->nextCachedMeasurementsIndex == YG_MAX_CACHED_RESULT_COUNT) { + if (layout->nextCachedMeasurementsIndex == usedMeasureCacheEntries) { if (gPrintChanges) { Log::log(node, YGLogLevelVerbose, nullptr, "Out of cache entries!\n"); } diff --git a/yoga/Yoga.h b/yoga/Yoga.h index 753a2f9f..7132a934 100644 --- a/yoga/Yoga.h +++ b/yoga/Yoga.h @@ -411,6 +411,8 @@ WIN_EXPORT float YGRoundValueToPixelGrid( const bool forceCeil, const bool forceFloor); +void YGSetUsedCachedEntries(size_t); + YG_EXTERN_C_END #ifdef __cplusplus