comparison org/vamp_plugins/RealTime.java @ 49:2db3640905ef

Rewrite RealTime so as not to use a native object handle, removing onerous and unsatisfactory requirement to call dispose() on all RealTime objects or leak native heap
author Chris Cannam
date Wed, 02 Sep 2015 15:17:40 +0100
parents c9515589be7d
children
comparison
equal deleted inserted replaced
48:bac96f9d9295 49:2db3640905ef
32 authorization. 32 authorization.
33 */ 33 */
34 34
35 package org.vamp_plugins; 35 package org.vamp_plugins;
36 36
37 /**
38 * RealTime class, corresponding to the C++ Vamp::RealTime.
39 *
40 * Although the implementation is in native code, this class does not
41 * store a native object handle and has no dispose() method -- it can
42 * be garbage collected without prior disposal like any plain Java
43 * object.
44 */
37 public class RealTime 45 public class RealTime
38 { 46 {
39 public RealTime(int s, int n) { initialise(s, n); } 47 public RealTime(int s, int n) { initialise(s, n); }
40
41 public native void dispose();
42 48
43 public native int sec(); 49 public native int sec();
44 public native int nsec(); 50 public native int nsec();
45 51
46 public native int usec(); 52 public native int usec();
57 63
58 public native static RealTime frame2RealTime(long frame, int sampleRate); 64 public native static RealTime frame2RealTime(long frame, int sampleRate);
59 public native static long realTime2Frame(RealTime r, int sampleRate); 65 public native static long realTime2Frame(RealTime r, int sampleRate);
60 66
61 private native void initialise(int s, int n); 67 private native void initialise(int s, int n);
62 private long nativeHandle; 68 private int m_s;
69 private int m_n;
63 } 70 }
64 71
65 72