Worked around rendering bug (model updates not resulting in a redraw)
authorDaniel Kirschten <daniel.kirschten@gmx.de>
Sat, 31 Aug 2019 13:56:28 +0000 (15:56 +0200)
committerDaniel Kirschten <daniel.kirschten@gmx.de>
Sat, 31 Aug 2019 13:56:28 +0000 (15:56 +0200)
net.mograsim.logic.model.am2900/src/net/mograsim/logic/model/examples/FusionNotWorkingTest.java

index eb8165f..c13ec98 100644 (file)
@@ -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<TimelineEventHandler> 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