Mercurial > hg > jvamp
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 |