X-Git-Url: https://gerrit.simantics.org/r/gitweb?p=simantics%2Fplatform.git;a=blobdiff_plain;f=bundles%2Forg.simantics.diagram.connection%2Fsrc%2Forg%2Fsimantics%2Fdiagram%2Fconnection%2Frendering%2FStyledRouteGraphRenderer.java;h=dd9473042152d0c3af43244d9549d63e4c649e4b;hp=b084e5875714938026400e5a8b6c938659e3ca71;hb=32f61540d7bf4d15f1ae5fa1b8cf56789f4ee207;hpb=e80d7307e1ca990f3f5f8e0132d4b2162fb9d25e diff --git a/bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/rendering/StyledRouteGraphRenderer.java b/bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/rendering/StyledRouteGraphRenderer.java index b084e5875..dd9473042 100644 --- a/bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/rendering/StyledRouteGraphRenderer.java +++ b/bundles/org.simantics.diagram.connection/src/org/simantics/diagram/connection/rendering/StyledRouteGraphRenderer.java @@ -36,9 +36,13 @@ public class StyledRouteGraphRenderer implements IRouteGraphRenderer, Serializab protected final ConnectionStyle style; + private static class Cache { + Path2D path = new Path2D.Double(); + THashSet branchPoints = new THashSet<>(); + } + // Caches to avoid creating new objects all the time during rendering - protected transient Path2D path; - protected transient THashSet branchPoints; + protected static ThreadLocal caches = ThreadLocal.withInitial(() -> new Cache()); public StyledRouteGraphRenderer(ConnectionStyle style) { if (style == null) @@ -52,14 +56,14 @@ public class StyledRouteGraphRenderer implements IRouteGraphRenderer, Serializab @Override public void render(Graphics2D g, RouteGraph rg) { - if (path == null) - path = new Path2D.Double(); + Cache cache = caches.get(); + Path2D path = cache.path; + THashSet branchPoints = cache.branchPoints; + path.reset(); rg.getPath2D(path); style.drawPath(g, path, false); - if (branchPoints == null) - branchPoints = new THashSet(); branchPoints.clear(); for(RouteLine line : rg.getLines()) { renderLine(g, line, false);