From 83c6cd16ace514c03dccad5fc43ca815c6f22314 Mon Sep 17 00:00:00 2001 From: kfeuz Date: Thu, 5 Feb 2015 00:24:08 -0700 Subject: [PATCH 1/2] Prevent memory leak by unregistering parent dispose method --- java/libraries/net/src/processing/net/Client.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/java/libraries/net/src/processing/net/Client.java b/java/libraries/net/src/processing/net/Client.java index fb8fa95eec..298d7c4905 100644 --- a/java/libraries/net/src/processing/net/Client.java +++ b/java/libraries/net/src/processing/net/Client.java @@ -61,6 +61,7 @@ public class Client implements Runnable { int bufferIndex; int bufferLast; + boolean isDisposeRegistered = false; /** * @param parent typically use "this" @@ -81,6 +82,7 @@ public Client(PApplet parent, String host, int port) { thread.start(); parent.registerMethod("dispose", this); + isDisposeRegistered = true; // reflection to check whether host sketch has a call for // public void clientEvent(processing.net.Client) @@ -158,6 +160,9 @@ public void stop() { disconnectEventMethod = null; } } + if(isDisposeRegistered){ + parent.unregisterMethod("dispose", this); + } dispose(); } From cd9b188da5abf2534757c7f429c980bc7d4050cb Mon Sep 17 00:00:00 2001 From: kfeuz Date: Thu, 5 Feb 2015 00:34:14 -0700 Subject: [PATCH 2/2] Prevent possible duplicate deregistering --- java/libraries/net/src/processing/net/Client.java | 1 + 1 file changed, 1 insertion(+) diff --git a/java/libraries/net/src/processing/net/Client.java b/java/libraries/net/src/processing/net/Client.java index 298d7c4905..2d867d9127 100644 --- a/java/libraries/net/src/processing/net/Client.java +++ b/java/libraries/net/src/processing/net/Client.java @@ -162,6 +162,7 @@ public void stop() { } if(isDisposeRegistered){ parent.unregisterMethod("dispose", this); + isDisposeRegistered = false; } dispose(); }