~ubuntu-branches/ubuntu/oneiric/openjdk-7/oneiric-security

« back to all changes in this revision

Viewing changes to pulseaudio/src/native/org_classpath_icedtea_pulseaudio_PulseAudioSourcePort.c

  • Committer: Package Import Robot
  • Author(s): Matthias Klose
  • Date: 2012-10-17 16:22:48 UTC
  • mfrom: (1.3.11) (8.1.25 quantal)
  • Revision ID: package-import@ubuntu.com-20121017162248-steblyv2lnk2t951
Tags: 7u9-2.3.3-0ubuntu1~11.10.1
Build IcedTea7 2.3.3 for oneiric.

Show diffs side-by-side

added added

removed removed

Lines of Context:
4
4
#include <string.h>
5
5
 
6
6
typedef struct java_context {
7
 
        JNIEnv* env;
8
 
        jobject obj;
 
7
    JNIEnv* env;
 
8
    jobject obj;
9
9
} java_context;
10
10
 
11
11
extern JNIEnv* pulse_thread_env;
12
12
 
13
13
void source_callback(pa_context *context, int success, void *userdata) {
14
 
        assert(context);
15
 
        assert(pulse_thread_env);
16
 
        notifyWaitingOperations(pulse_thread_env);
 
14
    assert(context);
 
15
    assert(pulse_thread_env);
 
16
    notifyWaitingOperations(pulse_thread_env);
17
17
}
18
18
 
19
19
void get_source_volume_callback(pa_context *context, const pa_source_info *i,
20
 
                int eol, void *userdata) {
21
 
        assert(context);
22
 
        assert(pulse_thread_env);
23
 
        
24
 
        if (eol == 0) {
25
 
                // printf("%s\n", i->name);
26
 
                jobject obj = (jobject) userdata;
27
 
                assert(obj);
28
 
                jclass cls = (*pulse_thread_env)->GetObjectClass(pulse_thread_env, obj);
29
 
                assert(cls);
30
 
                jmethodID mid1 = (*pulse_thread_env)->GetMethodID(pulse_thread_env, cls,
31
 
                                "update_channels_and_volume", "(IF)V");
32
 
                assert(mid1);
33
 
                (*pulse_thread_env)->CallVoidMethod(pulse_thread_env, obj, mid1,
34
 
                                (int) (i->volume).channels, (float) (i->volume).values[0]) ;
35
 
        } else {
36
 
                notifyWaitingOperations(pulse_thread_env);
37
 
        }
 
20
        int eol, void *userdata) {
 
21
    assert(context);
 
22
    assert(pulse_thread_env);
 
23
    
 
24
    if (eol == 0) {
 
25
        // printf("%s\n", i->name);
 
26
        jobject obj = (jobject) userdata;
 
27
        assert(obj);
 
28
        jclass cls = (*pulse_thread_env)->GetObjectClass(pulse_thread_env, obj);
 
29
        assert(cls);
 
30
        jmethodID mid1 = (*pulse_thread_env)->GetMethodID(pulse_thread_env, cls,
 
31
                "update_channels_and_volume", "(IF)V");
 
32
        assert(mid1);
 
33
        (*pulse_thread_env)->CallVoidMethod(pulse_thread_env, obj, mid1,
 
34
                (int) (i->volume).channels, (float) (i->volume).values[0]) ;
 
35
    } else {
 
36
        notifyWaitingOperations(pulse_thread_env);
 
37
    }
38
38
}
39
39
 
40
40
/*
44
44
 */
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);
48
 
        assert(cls);
49
 
        jfieldID fid = (*env)->GetFieldID(env, cls, "name", "Ljava/lang/String;");
50
 
        assert(fid);
51
 
        jstring jstr = (*env)->GetObjectField(env, obj, fid);
52
 
        assert(jstr);
53
 
        const char *name = (*env)->GetStringUTFChars(env, jstr, NULL);
54
 
        if (name == NULL) {
55
 
                return NULL;    // oome
56
 
        }
57
 
        
58
 
        pa_context* context = (pa_context*) getJavaPointer(env, obj, "contextPointer");
59
 
        assert(context);
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);
62
 
        assert(o);
63
 
        return convertNativePointerToJava(env, o);
 
47
    jclass cls = (*env)->GetObjectClass(env, obj);
 
48
    assert(cls);
 
49
    jfieldID fid = (*env)->GetFieldID(env, cls, "name", "Ljava/lang/String;");
 
50
    assert(fid);
 
51
    jstring jstr = (*env)->GetObjectField(env, obj, fid);
 
52
    assert(jstr);
 
53
    const char *name = (*env)->GetStringUTFChars(env, jstr, NULL);
 
54
    if (name == NULL) {
 
55
        return NULL;    // oome
 
56
    }
 
57
    
 
58
    pa_context* context = (pa_context*) getJavaPointer(env, obj, "contextPointer");
 
59
    assert(context);
 
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);
 
62
    assert(o);
 
63
    return convertNativePointerToJava(env, o);
64
64
}
65
65
 
66
66
/*
70
70
 */
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);
74
 
        assert(cls);
75
 
        
76
 
        jfieldID fid = (*env)->GetFieldID(env, cls, "name", "Ljava/lang/String;");
77
 
        assert(fid);
78
 
        
79
 
        jstring jstr = (*env)->GetObjectField(env, obj, fid);
80
 
        assert(jstr);
81
 
        
82
 
        const char *name = (*env)->GetStringUTFChars(env, jstr, NULL);
83
 
        if (name == NULL) {
84
 
                return NULL;    // oome
85
 
        }
86
 
        
87
 
        pa_context* context = (pa_context*) getJavaPointer(env, obj, "contextPointer");
88
 
        assert(context);
89
 
        
90
 
        obj = (*env)->NewGlobalRef(env, obj);
91
 
        fid = (*env)->GetFieldID(env, cls, "channels", "I");
92
 
        assert(fid);
93
 
        
94
 
        jint channels = (*env)->GetIntField(env, obj, fid);
95
 
        pa_cvolume cv;
96
 
        
97
 
        pa_operation *o = pa_context_set_source_volume_by_name (context, (char*) name,pa_cvolume_set(&cv, channels, value), source_callback, obj);
98
 
        assert(o);
99
 
        
100
 
        return convertNativePointerToJava(env, o);
 
73
    jclass cls = (*env)->GetObjectClass(env, obj);
 
74
    assert(cls);
 
75
    
 
76
    jfieldID fid = (*env)->GetFieldID(env, cls, "name", "Ljava/lang/String;");
 
77
    assert(fid);
 
78
    
 
79
    jstring jstr = (*env)->GetObjectField(env, obj, fid);
 
80
    assert(jstr);
 
81
    
 
82
    const char *name = (*env)->GetStringUTFChars(env, jstr, NULL);
 
83
    if (name == NULL) {
 
84
        return NULL;     // oome
 
85
    }
 
86
    
 
87
    pa_context* context = (pa_context*) getJavaPointer(env, obj, "contextPointer");
 
88
    assert(context);
 
89
    
 
90
    obj = (*env)->NewGlobalRef(env, obj);
 
91
    fid = (*env)->GetFieldID(env, cls, "channels", "I");
 
92
    assert(fid);
 
93
    
 
94
    jint channels = (*env)->GetIntField(env, obj, fid);
 
95
    pa_cvolume cv;
 
96
    
 
97
    pa_operation *o = pa_context_set_source_volume_by_name (context, (char*) name,pa_cvolume_set(&cv, channels, value), source_callback, obj);
 
98
    assert(o);
 
99
    
 
100
    return convertNativePointerToJava(env, o);
101
101
}
102
102