X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FEventHandler.java;h=cb74075277b76454accd94abe5ee800846048820;hb=f385eff0dd0aa61fbf21ae946c424f4a6a26de04;hp=7714aa5139eac07fc4db81f5a65b7ee76b72a60e;hpb=b0c50b891cbca28d3bd1d86276c132ff5221d8e4;p=ldk-java diff --git a/src/main/java/org/ldk/structs/EventHandler.java b/src/main/java/org/ldk/structs/EventHandler.java index 7714aa51..cb740752 100644 --- a/src/main/java/org/ldk/structs/EventHandler.java +++ b/src/main/java/org/ldk/structs/EventHandler.java @@ -4,6 +4,8 @@ import org.ldk.impl.bindings; import org.ldk.enums.*; import org.ldk.util.*; import java.util.Arrays; +import java.lang.ref.Reference; +import javax.annotation.Nullable; /** * A trait implemented for objects handling events from [`EventsProvider`]. @@ -36,8 +38,8 @@ public class EventHandler extends CommonBase { impl_holder.held = new EventHandler(new bindings.LDKEventHandler() { @Override public void handle_event(long event) { Event event_hu_conv = Event.constr_from_ptr(event); - event_hu_conv.ptrs_to.add(this); arg.handle_event(event_hu_conv); + Reference.reachabilityFence(arg); } }); return impl_holder.held; @@ -48,7 +50,9 @@ public class EventHandler extends CommonBase { * See [`EventsProvider`] for details that must be considered when implementing this method. */ public void handle_event(Event event) { - bindings.EventHandler_handle_event(this.ptr, event.ptr); + bindings.EventHandler_handle_event(this.ptr, event == null ? 0 : event.ptr); + Reference.reachabilityFence(this); + Reference.reachabilityFence(event); } }