comparison src/RealTime.cpp @ 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 5c5c1693235d
comparison
equal deleted inserted replaced
48:bac96f9d9295 49:2db3640905ef
34 34
35 #include "org_vamp_plugins_RealTime.h" 35 #include "org_vamp_plugins_RealTime.h"
36 36
37 #include <vamp-hostsdk/RealTime.h> 37 #include <vamp-hostsdk/RealTime.h>
38 38
39 #include "handle.h" 39 #include "getset.h"
40 40
41 using Vamp::RealTime; 41 using Vamp::RealTime;
42 using std::string; 42 using std::string;
43 43
44 JNIEXPORT void JNICALL
45 Java_org_vamp_1plugins_RealTime_dispose(JNIEnv *env, jobject obj)
46 {
47 RealTime *rt = getHandle<RealTime>(env, obj);
48 setHandle<RealTime>(env, obj, 0);
49 delete rt;
50 }
51
52 JNIEXPORT jint JNICALL 44 JNIEXPORT jint JNICALL
53 Java_org_vamp_1plugins_RealTime_sec(JNIEnv *env, jobject obj) 45 Java_org_vamp_1plugins_RealTime_sec(JNIEnv *env, jobject obj)
54 { 46 {
55 RealTime *rt = getHandle<RealTime>(env, obj); 47 RealTime rt = getRealTime(env, obj);
56 return rt->sec; 48 return rt.sec;
57 } 49 }
58 50
59 JNIEXPORT jint JNICALL 51 JNIEXPORT jint JNICALL
60 Java_org_vamp_1plugins_RealTime_nsec(JNIEnv *env, jobject obj) 52 Java_org_vamp_1plugins_RealTime_nsec(JNIEnv *env, jobject obj)
61 { 53 {
62 RealTime *rt = getHandle<RealTime>(env, obj); 54 RealTime rt = getRealTime(env, obj);
63 return rt->nsec; 55 return rt.nsec;
64 } 56 }
65 57
66 JNIEXPORT jint JNICALL 58 JNIEXPORT jint JNICALL
67 Java_org_vamp_1plugins_RealTime_usec(JNIEnv *env, jobject obj) 59 Java_org_vamp_1plugins_RealTime_usec(JNIEnv *env, jobject obj)
68 { 60 {
69 RealTime *rt = getHandle<RealTime>(env, obj); 61 RealTime rt = getRealTime(env, obj);
70 return rt->usec(); 62 return rt.usec();
71 } 63 }
72 64
73 JNIEXPORT jint JNICALL 65 JNIEXPORT jint JNICALL
74 Java_org_vamp_1plugins_RealTime_msec(JNIEnv *env, jobject obj) 66 Java_org_vamp_1plugins_RealTime_msec(JNIEnv *env, jobject obj)
75 { 67 {
76 RealTime *rt = getHandle<RealTime>(env, obj); 68 RealTime rt = getRealTime(env, obj);
77 return rt->msec(); 69 return rt.msec();
78 } 70 }
79 71
80 JNIEXPORT jstring JNICALL 72 JNIEXPORT jstring JNICALL
81 Java_org_vamp_1plugins_RealTime_toString(JNIEnv *env, jobject obj) 73 Java_org_vamp_1plugins_RealTime_toString(JNIEnv *env, jobject obj)
82 { 74 {
83 RealTime *rt = getHandle<RealTime>(env, obj); 75 RealTime rt = getRealTime(env, obj);
84 return env->NewStringUTF(rt->toString().c_str()); 76 return env->NewStringUTF(rt.toString().c_str());
85 } 77 }
86 78
87 JNIEXPORT jstring JNICALL 79 JNIEXPORT jstring JNICALL
88 Java_org_vamp_1plugins_RealTime_toText(JNIEnv *env, jobject obj) 80 Java_org_vamp_1plugins_RealTime_toText(JNIEnv *env, jobject obj)
89 { 81 {
90 RealTime *rt = getHandle<RealTime>(env, obj); 82 RealTime rt = getRealTime(env, obj);
91 return env->NewStringUTF(rt->toText().c_str()); 83 return env->NewStringUTF(rt.toText().c_str());
92 } 84 }
93 85
94 JNIEXPORT jobject JNICALL 86 JNIEXPORT jobject JNICALL
95 Java_org_vamp_1plugins_RealTime_fromSeconds(JNIEnv *env, jclass cls, jdouble s) 87 Java_org_vamp_1plugins_RealTime_fromSeconds(JNIEnv *env, jclass cls, jdouble s)
96 { 88 {
119 } 111 }
120 112
121 JNIEXPORT jlong JNICALL 113 JNIEXPORT jlong JNICALL
122 Java_org_vamp_1plugins_RealTime_realTime2Frame(JNIEnv *env, jclass cls, jobject obj, jint sampleRate) 114 Java_org_vamp_1plugins_RealTime_realTime2Frame(JNIEnv *env, jclass cls, jobject obj, jint sampleRate)
123 { 115 {
124 RealTime *rt = getHandle<RealTime>(env, obj); 116 RealTime rt = getRealTime(env, obj);
125 return RealTime::realTime2Frame(*rt, sampleRate); 117 return RealTime::realTime2Frame(rt, sampleRate);
126 } 118 }
127 119
128 JNIEXPORT void JNICALL 120 JNIEXPORT void JNICALL
129 Java_org_vamp_1plugins_RealTime_initialise(JNIEnv *env, jobject obj, jint sec, jint nsec) 121 Java_org_vamp_1plugins_RealTime_initialise(JNIEnv *env, jobject obj, jint sec, jint nsec)
130 { 122 {
131 RealTime *rt = new RealTime(sec, nsec); 123 setIntField(env, obj, "m_s", sec);
132 setHandle(env, obj, rt); 124 setIntField(env, obj, "m_n", nsec);
133 } 125 }
134 126
135
136