From 9f5a9eae9a7863412cc5eb433bf15e5ee71da616 Mon Sep 17 00:00:00 2001 From: Danielshe Date: Sun, 3 Nov 2019 14:44:52 +0800 Subject: 3.2.1 --- .../me/shedaniel/rei/impl/DisplayHelperImpl.java | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) (limited to 'src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java') diff --git a/src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java b/src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java index cf182ebf5..2abf3ddd8 100644 --- a/src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java +++ b/src/main/java/me/shedaniel/rei/impl/DisplayHelperImpl.java @@ -50,12 +50,13 @@ public class DisplayHelperImpl implements DisplayHelper { private Map, DisplayBoundsHandler> handlerCache = Maps.newHashMap(); private Map>> handlerSortedCache = Maps.newHashMap(); private BaseBoundsHandler baseBoundsHandler; - private Class tempScreen; + private Class tempScreen; @Override public List> getSortedBoundsHandlers(Class screenClass) { - if (handlerSortedCache.containsKey(screenClass)) - return handlerSortedCache.get(screenClass); + List> possibleCached = handlerSortedCache.get(screenClass); + if (possibleCached != null) + return possibleCached; tempScreen = screenClass; handlerSortedCache.put(screenClass, screenDisplayBoundsHandlers.stream().filter(this::filterResponsible).sorted(BOUNDS_HANDLER_COMPARATOR).collect(Collectors.toList())); return handlerSortedCache.get(screenClass); @@ -68,14 +69,16 @@ public class DisplayHelperImpl implements DisplayHelper { @Override public DisplayBoundsHandler getResponsibleBoundsHandler(Class screenClass) { - if (handlerCache.containsKey(screenClass)) - return handlerCache.get(screenClass); - tempScreen = screenClass; - handlerCache.put(screenClass, screenDisplayBoundsHandlers.stream().filter(this::filterResponsible).sorted(BOUNDS_HANDLER_COMPARATOR).findAny().orElse(EMPTY)); + DisplayBoundsHandler possibleCached = handlerCache.get(screenClass); + if (possibleCached != null) + return possibleCached; + List> handlers = getSortedBoundsHandlers(screenClass); + handlerCache.put(screenClass, handlers.isEmpty() ? EMPTY : handlers.get(0)); return handlerCache.get(screenClass); } - public boolean filterResponsible(DisplayBoundsHandler handler) { + @Deprecated + public boolean filterResponsible(DisplayBoundsHandler handler) { return handler.getBaseSupportedClass().isAssignableFrom(tempScreen); } @@ -89,14 +92,17 @@ public class DisplayHelperImpl implements DisplayHelper { return baseBoundsHandler; } + @Deprecated public void setBaseBoundsHandler(BaseBoundsHandler baseBoundsHandler) { this.baseBoundsHandler = baseBoundsHandler; } + @Deprecated public void resetData() { screenDisplayBoundsHandlers.clear(); } + @Deprecated public void resetCache() { handlerCache.clear(); handlerSortedCache.clear(); -- cgit