From a212448a4e22190a86a386476edfefedc38b3eb7 Mon Sep 17 00:00:00 2001 From: shartte Date: Tue, 1 Sep 2020 17:35:33 +0200 Subject: [PATCH] Avoid CMEs when two chunks render concurrently and (#4668) access the same map. --- .../render/cablebus/CableBusBakedModel.java | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java b/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java index cdde27b7f..cc7b5e913 100644 --- a/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java +++ b/src/main/java/appeng/client/render/cablebus/CableBusBakedModel.java @@ -92,12 +92,14 @@ public class CableBusBakedModel implements IBakedModel { if (layer == RenderType.getCutout()) { // First, handle the cable at the center of the cable bus - final List cableModel = CABLE_MODEL_CACHE.computeIfAbsent(renderState, k -> { - final List model = new ArrayList<>(); - this.addCableQuads(renderState, model); - return model; - }); - quads.addAll(cableModel); + synchronized (CABLE_MODEL_CACHE) { + final List cableModel = CABLE_MODEL_CACHE.computeIfAbsent(renderState, k -> { + final List model = new ArrayList<>(); + this.addCableQuads(renderState, model); + return model; + }); + quads.addAll(cableModel); + } // Then handle attachments for (Direction facing : Direction.values()) { @@ -342,7 +344,9 @@ public class CableBusBakedModel implements IBakedModel { } public static void clearCache() { - CABLE_MODEL_CACHE.clear(); + synchronized (CABLE_MODEL_CACHE) { + CABLE_MODEL_CACHE.clear(); + } } }