From ad86e3b8bce323054736bfd8ff14a33200c08104 Mon Sep 17 00:00:00 2001 From: Jonathan Feinberg Date: Sun, 18 May 2014 23:41:20 -0400 Subject: [PATCH 1/3] Permit implementing captureEvent without having to link to Capture at buildtime. This is useful for Python mode, or any other Java-compatible Processing that doesn't allow reflection on the sketch. --- .../video/src/processing/video/Capture.java | 23 +++++++++++++------ 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/java/libraries/video/src/processing/video/Capture.java b/java/libraries/video/src/processing/video/Capture.java index 8f233b9c5..aee1bc7da 100644 --- a/java/libraries/video/src/processing/video/Capture.java +++ b/java/libraries/video/src/processing/video/Capture.java @@ -966,7 +966,7 @@ public class Capture extends PImage implements PConstants { /** * Uses a generic object as handler of the capture. This object should have a - * movieEvent method that receives a GSMovie argument. This method will + * captureEvent method that receives a GSMovie argument. This method will * be called upon a new frame read event. * */ @@ -974,8 +974,17 @@ public class Capture extends PImage implements PConstants { eventHandler = obj; try { - captureEventMethod = parent.getClass().getMethod("captureEvent", - new Class[] { Capture.class }); + captureEventMethod = obj.getClass().getMethod("captureEvent", Capture.class); + return; + } catch (Exception e) { + // no such method, or an error.. which is fine, just ignore + } + + // The captureEvent method may be declared as receiving Object, rather + // than Capture. + try { + captureEventMethod = obj.getClass().getMethod("captureEvent", Object.class); + return; } catch (Exception e) { // no such method, or an error.. which is fine, just ignore } @@ -1009,10 +1018,10 @@ public class Capture extends PImage implements PConstants { return; } - // Creates a movieEvent. + // Creates a captureEvent. if (captureEventMethod != null) { try { - captureEventMethod.invoke(eventHandler, new Object[] { this }); + captureEventMethod.invoke(eventHandler, this); } catch (Exception e) { System.err.println( "error, disabling captureEvent() for capture object"); @@ -1035,10 +1044,10 @@ public class Capture extends PImage implements PConstants { } natBuffer = buffer; - // Creates a movieEvent. + // Creates a captureEvent. if (captureEventMethod != null) { try { - captureEventMethod.invoke(eventHandler, new Object[] { this }); + captureEventMethod.invoke(eventHandler, this); } catch (Exception e) { System.err.println( "error, disabling captureEvent() for capture object"); From 7f243122e116b698bcf30c746bd93b1bda585020 Mon Sep 17 00:00:00 2001 From: Jonathan Feinberg Date: Sun, 18 May 2014 23:46:25 -0400 Subject: [PATCH 2/3] Fix some more javadoc in Capture.java. --- java/libraries/video/src/processing/video/Capture.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/libraries/video/src/processing/video/Capture.java b/java/libraries/video/src/processing/video/Capture.java index aee1bc7da..1d5eefeef 100644 --- a/java/libraries/video/src/processing/video/Capture.java +++ b/java/libraries/video/src/processing/video/Capture.java @@ -966,7 +966,7 @@ public class Capture extends PImage implements PConstants { /** * Uses a generic object as handler of the capture. This object should have a - * captureEvent method that receives a GSMovie argument. This method will + * captureEvent method that receives a Capture argument. This method will * be called upon a new frame read event. * */ From 0f908fe3a8c3bf4b17e7150110f9cd0ada57f1d0 Mon Sep 17 00:00:00 2001 From: Jonathan Feinberg Date: Sun, 18 May 2014 23:48:56 -0400 Subject: [PATCH 3/3] Factor out code that fires the captureEvent. --- .../video/src/processing/video/Capture.java | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) diff --git a/java/libraries/video/src/processing/video/Capture.java b/java/libraries/video/src/processing/video/Capture.java index 1d5eefeef..8f737edf1 100644 --- a/java/libraries/video/src/processing/video/Capture.java +++ b/java/libraries/video/src/processing/video/Capture.java @@ -1018,20 +1018,9 @@ public class Capture extends PImage implements PConstants { return; } - // Creates a captureEvent. - if (captureEventMethod != null) { - try { - captureEventMethod.invoke(eventHandler, this); - } catch (Exception e) { - System.err.println( - "error, disabling captureEvent() for capture object"); - e.printStackTrace(); - captureEventMethod = null; - } - } + fireCaptureEvent(); } - protected synchronized void invokeEvent(int w, int h, Buffer buffer) { available = true; bufWidth = w; @@ -1044,6 +1033,10 @@ public class Capture extends PImage implements PConstants { } natBuffer = buffer; + fireCaptureEvent(); + } + + private void fireCaptureEvent() { // Creates a captureEvent. if (captureEventMethod != null) { try { @@ -1057,7 +1050,6 @@ public class Capture extends PImage implements PConstants { } } - //////////////////////////////////////////////////////////// // Stream query methods.