feat(renderer): replace HashMap with ConcurrentHashMap for thread-safe control caching
This commit is contained in:
@@ -2,9 +2,9 @@ package de.extio.game_engine.renderer.g2d.control;
|
|||||||
|
|
||||||
import java.awt.Graphics2D;
|
import java.awt.Graphics2D;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -15,6 +15,7 @@ import de.extio.game_engine.renderer.g2d.control.impl.G2DBaseControlImpl;
|
|||||||
import de.extio.game_engine.renderer.g2d.control.impl.G2DButtonControlImpl;
|
import de.extio.game_engine.renderer.g2d.control.impl.G2DButtonControlImpl;
|
||||||
import de.extio.game_engine.renderer.g2d.control.impl.G2DLabelControlImpl;
|
import de.extio.game_engine.renderer.g2d.control.impl.G2DLabelControlImpl;
|
||||||
import de.extio.game_engine.renderer.g2d.control.impl.G2DMultiLineTextAreaControlImpl;
|
import de.extio.game_engine.renderer.g2d.control.impl.G2DMultiLineTextAreaControlImpl;
|
||||||
|
import de.extio.game_engine.renderer.g2d.control.impl.G2DPopupMenuControlImpl;
|
||||||
import de.extio.game_engine.renderer.g2d.control.impl.G2DSetFocusControl;
|
import de.extio.game_engine.renderer.g2d.control.impl.G2DSetFocusControl;
|
||||||
import de.extio.game_engine.renderer.g2d.control.impl.G2DSliderControlImpl;
|
import de.extio.game_engine.renderer.g2d.control.impl.G2DSliderControlImpl;
|
||||||
import de.extio.game_engine.renderer.g2d.control.impl.G2DSwitchControlImpl;
|
import de.extio.game_engine.renderer.g2d.control.impl.G2DSwitchControlImpl;
|
||||||
@@ -24,7 +25,6 @@ import de.extio.game_engine.renderer.g2d.control.impl.G2DToggleButtonControlImpl
|
|||||||
import de.extio.game_engine.renderer.g2d.control.impl.G2DTooltipControl;
|
import de.extio.game_engine.renderer.g2d.control.impl.G2DTooltipControl;
|
||||||
import de.extio.game_engine.renderer.g2d.control.impl.G2DWindowCloseButtonControlImpl;
|
import de.extio.game_engine.renderer.g2d.control.impl.G2DWindowCloseButtonControlImpl;
|
||||||
import de.extio.game_engine.renderer.g2d.control.impl.G2DWindowPanelControlImpl;
|
import de.extio.game_engine.renderer.g2d.control.impl.G2DWindowPanelControlImpl;
|
||||||
import de.extio.game_engine.renderer.g2d.control.impl.G2DPopupMenuControlImpl;
|
|
||||||
import de.extio.game_engine.renderer.model.RenderingBo;
|
import de.extio.game_engine.renderer.model.RenderingBo;
|
||||||
import de.extio.game_engine.renderer.model.RenderingBoLayer;
|
import de.extio.game_engine.renderer.model.RenderingBoLayer;
|
||||||
import de.extio.game_engine.renderer.model.bo.ControlRenderingBo;
|
import de.extio.game_engine.renderer.model.bo.ControlRenderingBo;
|
||||||
@@ -37,9 +37,9 @@ public class G2DDrawControl extends G2DAbstractRenderingBo implements ControlRen
|
|||||||
|
|
||||||
private final static Logger LOGGER = LoggerFactory.getLogger(G2DDrawControl.class);
|
private final static Logger LOGGER = LoggerFactory.getLogger(G2DDrawControl.class);
|
||||||
|
|
||||||
public static Map<String, BaseControl> CACHED_CONTROLS = new HashMap<>();
|
public static Map<String, BaseControl> CACHED_CONTROLS = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
public static Map<String, List<BaseControl>> CONTROL_GROUPS = new HashMap<>();
|
public static Map<String, List<BaseControl>> CONTROL_GROUPS = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
private Class<? extends BaseControl> clazz;
|
private Class<? extends BaseControl> clazz;
|
||||||
|
|
||||||
@@ -218,8 +218,7 @@ public class G2DDrawControl extends G2DAbstractRenderingBo implements ControlRen
|
|||||||
|
|
||||||
if (this.customControlConfigurations == null) {
|
if (this.customControlConfigurations == null) {
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
final
|
final var beans = (java.util.Collection<CustomControlConfiguration<? extends G2DBaseControlImpl>>) (java.util.Collection<?>) this.rendererData.getApplicationContext().getBeansOfType(CustomControlConfiguration.class).values();
|
||||||
var beans = (java.util.Collection<CustomControlConfiguration<? extends G2DBaseControlImpl>>) (java.util.Collection<?>) this.rendererData.getApplicationContext().getBeansOfType(CustomControlConfiguration.class).values();
|
|
||||||
this.customControlConfigurations = List.copyOf(beans);
|
this.customControlConfigurations = List.copyOf(beans);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user