6
6
typedef struct java_context {
11
11
extern JNIEnv* pulse_thread_env;
13
13
void source_callback(pa_context *context, int success, void *userdata) {
15
assert(pulse_thread_env);
16
notifyWaitingOperations(pulse_thread_env);
15
assert(pulse_thread_env);
16
notifyWaitingOperations(pulse_thread_env);
19
19
void get_source_volume_callback(pa_context *context, const pa_source_info *i,
20
int eol, void *userdata) {
22
assert(pulse_thread_env);
25
// printf("%s\n", i->name);
26
jobject obj = (jobject) userdata;
28
jclass cls = (*pulse_thread_env)->GetObjectClass(pulse_thread_env, obj);
30
jmethodID mid1 = (*pulse_thread_env)->GetMethodID(pulse_thread_env, cls,
31
"update_channels_and_volume", "(IF)V");
33
(*pulse_thread_env)->CallVoidMethod(pulse_thread_env, obj, mid1,
34
(int) (i->volume).channels, (float) (i->volume).values[0]) ;
36
notifyWaitingOperations(pulse_thread_env);
20
int eol, void *userdata) {
22
assert(pulse_thread_env);
25
// printf("%s\n", i->name);
26
jobject obj = (jobject) userdata;
28
jclass cls = (*pulse_thread_env)->GetObjectClass(pulse_thread_env, obj);
30
jmethodID mid1 = (*pulse_thread_env)->GetMethodID(pulse_thread_env, cls,
31
"update_channels_and_volume", "(IF)V");
33
(*pulse_thread_env)->CallVoidMethod(pulse_thread_env, obj, mid1,
34
(int) (i->volume).channels, (float) (i->volume).values[0]) ;
36
notifyWaitingOperations(pulse_thread_env);
45
45
JNIEXPORT jbyteArray JNICALL Java_org_classpath_icedtea_pulseaudio_PulseAudioSourcePort_native_1update_1volume
46
46
(JNIEnv *env, jobject obj) {
47
jclass cls = (*env)->GetObjectClass(env, obj);
49
jfieldID fid = (*env)->GetFieldID(env, cls, "name", "Ljava/lang/String;");
51
jstring jstr = (*env)->GetObjectField(env, obj, fid);
53
const char *name = (*env)->GetStringUTFChars(env, jstr, NULL);
58
pa_context* context = (pa_context*) getJavaPointer(env, obj, "contextPointer");
60
obj = (*env)->NewGlobalRef(env, obj);
61
pa_operation *o = pa_context_get_source_info_by_name (context, (char*) name, get_source_volume_callback, obj);
63
return convertNativePointerToJava(env, o);
47
jclass cls = (*env)->GetObjectClass(env, obj);
49
jfieldID fid = (*env)->GetFieldID(env, cls, "name", "Ljava/lang/String;");
51
jstring jstr = (*env)->GetObjectField(env, obj, fid);
53
const char *name = (*env)->GetStringUTFChars(env, jstr, NULL);
58
pa_context* context = (pa_context*) getJavaPointer(env, obj, "contextPointer");
60
obj = (*env)->NewGlobalRef(env, obj);
61
pa_operation *o = pa_context_get_source_info_by_name (context, (char*) name, get_source_volume_callback, obj);
63
return convertNativePointerToJava(env, o);
71
71
JNIEXPORT jbyteArray JNICALL Java_org_classpath_icedtea_pulseaudio_PulseAudioSourcePort_native_1set_1volume
72
72
(JNIEnv *env, jobject obj, jfloat value) {
73
jclass cls = (*env)->GetObjectClass(env, obj);
76
jfieldID fid = (*env)->GetFieldID(env, cls, "name", "Ljava/lang/String;");
79
jstring jstr = (*env)->GetObjectField(env, obj, fid);
82
const char *name = (*env)->GetStringUTFChars(env, jstr, NULL);
87
pa_context* context = (pa_context*) getJavaPointer(env, obj, "contextPointer");
90
obj = (*env)->NewGlobalRef(env, obj);
91
fid = (*env)->GetFieldID(env, cls, "channels", "I");
94
jint channels = (*env)->GetIntField(env, obj, fid);
97
pa_operation *o = pa_context_set_source_volume_by_name (context, (char*) name,pa_cvolume_set(&cv, channels, value), source_callback, obj);
100
return convertNativePointerToJava(env, o);
73
jclass cls = (*env)->GetObjectClass(env, obj);
76
jfieldID fid = (*env)->GetFieldID(env, cls, "name", "Ljava/lang/String;");
79
jstring jstr = (*env)->GetObjectField(env, obj, fid);
82
const char *name = (*env)->GetStringUTFChars(env, jstr, NULL);
87
pa_context* context = (pa_context*) getJavaPointer(env, obj, "contextPointer");
90
obj = (*env)->NewGlobalRef(env, obj);
91
fid = (*env)->GetFieldID(env, cls, "channels", "I");
94
jint channels = (*env)->GetIntField(env, obj, fid);
97
pa_operation *o = pa_context_set_source_volume_by_name (context, (char*) name,pa_cvolume_set(&cv, channels, value), source_callback, obj);
100
return convertNativePointerToJava(env, o);