X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FEventHandler.java;h=2de4e0c04f84da82a0d64c3c49736b795ad4db06;hb=8a515be62568ee4327e636a977e32204006d6493;hp=7714aa5139eac07fc4db81f5a65b7ee76b72a60e;hpb=b6cc0960eaee5a5bbc7fde79a56152d6dcd649d8;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..2de4e0c0 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 & ~1); + Reference.reachabilityFence(this); + Reference.reachabilityFence(event); } }