From: Daniel Kirschten Date: Sat, 31 Aug 2019 13:56:28 +0000 (+0200) Subject: Worked around rendering bug (model updates not resulting in a redraw) X-Git-Url: https://mograsim.net/gitweb/?a=commitdiff_plain;h=4398143ae40a2c41031bacabe9151f0e93d02d67;p=Mograsim.git Worked around rendering bug (model updates not resulting in a redraw) --- diff --git a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/FusionNotWorkingTest.java b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/FusionNotWorkingTest.java index eb8165f5..c13ec98f 100644 --- a/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/FusionNotWorkingTest.java +++ b/net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/FusionNotWorkingTest.java @@ -1,8 +1,13 @@ package net.mograsim.logic.model.examples; +import java.util.concurrent.atomic.AtomicReference; + import net.haspamelodica.swt.helper.gcs.GeneralGC; import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle; +import net.mograsim.logic.core.timeline.TimelineEventHandler; +import net.mograsim.logic.model.LogicUICanvas; import net.mograsim.logic.model.SimpleLogicUIStandalone; +import net.mograsim.logic.model.SimpleLogicUIStandalone.VisualisationObjects; import net.mograsim.logic.model.model.ViewModelModifiable; import net.mograsim.logic.model.serializing.DeserializedSubmodelComponent; import net.mograsim.logic.model.serializing.IdentifierGetter; @@ -13,7 +18,7 @@ public class FusionNotWorkingTest { public static void main(String[] args) { - SimpleLogicUIStandalone.executeVisualisation(FusionNotWorkingTest::create); + SimpleLogicUIStandalone.executeVisualisation(FusionNotWorkingTest::create, FusionNotWorkingTest::beforeRun); } public static void create(ViewModelModifiable model) @@ -38,4 +43,18 @@ public class FusionNotWorkingTest } }); } + + public static void beforeRun(VisualisationObjects vis) + { + // TODO workaround for rendering bug + AtomicReference functionRef = new AtomicReference<>(); + LogicUICanvas logicUICanvas = vis.gui.getLogicUICanvas(); + TimelineEventHandler function = e -> + { + logicUICanvas.redrawThreadsafe(); + vis.timeline.addEvent(functionRef.get(), 50); + }; + functionRef.set(function); + vis.timeline.addEvent(function, 0); + } } \ No newline at end of file