X-Git-Url: https://mograsim.net/gitweb/?a=blobdiff_plain;f=net.mograsim.logic.core%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fcore%2Fcomponents%2FBasicCoreComponent.java;fp=net.mograsim.logic.core%2Fsrc%2Fnet%2Fmograsim%2Flogic%2Fcore%2Fcomponents%2FBasicCoreComponent.java;h=369a05feb07a110f22dad2f24f2da8e498a9df04;hb=9bb76ff610ab0fcc07a9049e4a572053339593c9;hp=9f3da4a238464d2d24f378ba83e56784d89478e6;hpb=c023578f3bc1537b575520740cc1c31ebc47aad7;p=Mograsim.git diff --git a/net.mograsim.logic.core/src/net/mograsim/logic/core/components/BasicCoreComponent.java b/net.mograsim.logic.core/src/net/mograsim/logic/core/components/BasicCoreComponent.java index 9f3da4a2..369a05fe 100644 --- a/net.mograsim.logic.core/src/net/mograsim/logic/core/components/BasicCoreComponent.java +++ b/net.mograsim.logic.core/src/net/mograsim/logic/core/components/BasicCoreComponent.java @@ -3,6 +3,7 @@ package net.mograsim.logic.core.components; import net.mograsim.logic.core.LogicObservable; import net.mograsim.logic.core.LogicObserver; import net.mograsim.logic.core.timeline.Timeline; +import net.mograsim.logic.core.timeline.TimelineEventHandler; /** * A basic component that recomputes all outputs (with a delay), when it is updated. @@ -26,10 +27,12 @@ public abstract class BasicCoreComponent extends CoreComponent implements LogicO } @Override - public void update(LogicObservable initiator) + public final void update(LogicObservable initiator) { - timeline.addEvent(e -> compute(), processTime); + TimelineEventHandler delayedUpdates = compute(); + if (delayedUpdates != null) + timeline.addEvent(delayedUpdates, processTime); } - protected abstract void compute(); + protected abstract TimelineEventHandler compute(); }