Mercurial > hg > release > icedtea6-1.4
view pulseaudio/src/native/org_classpath_icedtea_pulseaudio_PulseAudioSourcePort.c @ 1322:a08ebb168e2f
2009-01-21 Omair Majid <omajid@redhat.com>
* pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioClip.java:
Remove unused variables volume and muted.
(PulseAudioClip): Remove variable volume.
(open): Remove muteControl, volume and muted.
(native_setVolume): Rename to native_set_volume.
(native_update_volume): New function.
(isMuted): Remove.
(setMuted): Remove.
(setVolume): Rename to setCachedVolume.
(getVolume): Rename to getCachedVolume.
* pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioMuteControl.java:
Remove file. Mute relied on chaning the volume only through the api. That
assumption is invalid as the user can change volume through pulseaudio's
controls.
* pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioPlaybackLine.java
(isMuted): Remove.
(setMuted): Remove.
(native_setVolume): Rename to native_set_volume.
(native_update_volume): New function.
(getVolume): Rename to getCachedVolume.
(setVolume): Rename to setCachedVolume.
* pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioPort.java:
Remove muted and muteControl. Rename volume to cachedVolume.
(PulseAudioPort): Remove muteControl.
(isMuted): Remove function.
(setMuted): Remove.
(native_setVolume): Rename to native_set_volume.
(native_updateVolumeInfo): Rename to native_update_volume.
(setVolume): Rename to setCachedVolume.
(getVolume): Rename to getCachedVolume.
* pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLine.java:
Remove muteControl, muted and volume.
(open): Remove muteControl.
(native_setVolume): Rename to native_set_volume.
(native_update_volume): New function.
(isMuted): Remove.
(setMuted): Remove.
(getVolume): Rename to getCachedVolume.
(setVolume): Rename to setCachedVolume.
* pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioSourcePort.java
(native_setVolume): Rename to native_set_volume.
(native_updateVolumeInfo): Rename to native_update_volume.
* pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioTargetPort.java
(native_setVolume): Rename to native_set_volume.
(native_updateVolumeInfo): Rename to native_update_volume.
* pulseaudio/src/java/org/classpath/icedtea/pulseaudio/PulseAudioVolumeControl.java
(setValue): Dont check for mute.
(getValue): Query pulseaudio for any change in volume.
* pulseaudio/src/java/org/classpath/icedtea/pulseaudio/Stream.java:
New variable cachedVolume.
(native_setVolume): Rename to native_set_volume.
(native_update_volume): New function.
(getCachedVolume): New function.
(setCachedVolume): New function.
(update_channels_and_volume): New function.
* pulseaudio/src/native/org_classpath_icedtea_pulseaudio_EventLoop.c
(sink_input_volume_change_complete): Remove.
(sink_input_change_volume): Remove.
(Java_org_classpath_icedtea_pulseaudio_EventLoop_native_1set_1sink_1volume):
Remove.
* pulseaudio/src/native/org_classpath_icedtea_pulseaudio_PulseAudioSourcePort.c
(Java_org_classpath_icedtea_pulseaudio_PulseAudioSourcePort_native_1updateVolumeInfo):
Rename to
Java_org_classpath_icedtea_pulseaudio_PulseAudioSourcePort_native_1update_1volume.
(Java_org_classpath_icedtea_pulseaudio_PulseAudioSourcePort_native_1setVolume):
Rename to
Java_org_classpath_icedtea_pulseaudio_PulseAudioSourcePort_native_1set_1volume.
* pulseaudio/src/native/org_classpath_icedtea_pulseaudio_PulseAudioTargetPort.c
(Java_org_classpath_icedtea_pulseaudio_PulseAudioTargetPort_native_1updateVolumeInfo):
Rename to
Java_org_classpath_icedtea_pulseaudio_PulseAudioTargetPort_native_1update_1volume.
(Java_org_classpath_icedtea_pulseaudio_PulseAudioTargetPort_native_1setVolume):
Rename to
Java_org_classpath_icedtea_pulseaudio_PulseAudioTargetPort_native_1set_1volume.
* pulseaudio/src/native/org_classpath_icedtea_pulseaudio_Stream.c
(Java_org_classpath_icedtea_pulseaudio_Stream_native_1setVolume): Rename
to Java_org_classpath_icedtea_pulseaudio_Stream_native_1set_1volume.
(get_sink_input_volume_callback): New function.
(Java_org_classpath_icedtea_pulseaudio_Stream_native_1update_1volume): New
function.
* pulseaudio/unittests/org/classpath/icedtea/pulseaudio/PulseAudioClipTest.java
(testSupportedControls): Update to not check for MuteControl.
* pulseaudio/unittests/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLineRawTest.java
(testVolumeAndMute): Rename to testVolume. Remove test for MuteControl.
* pulseaudio/unittests/org/classpath/icedtea/pulseaudio/PulseAudioSourceDataLineTest.java
(testVolumeAndMute): Likewise.
(testSupportedControls): Update to not check for MuteControl.
* pulseaudio/unittests/org/classpath/icedtea/pulseaudio/PulseAudioSourcePortTest.java
(testControls): Update to not check for MuteControl.
* pulseaudio/unittests/org/classpath/icedtea/pulseaudio/PulseAudioTargetPortTest.java
(testControls): Likewise.
author | Omair Majid <omajid@redhat.com> |
---|---|
date | Wed, 21 Jan 2009 17:17:47 -0500 |
parents | 8b85ec866923 |
children |
line wrap: on
line source
#include "org_classpath_icedtea_pulseaudio_PulseAudioSourcePort.h" #include "jni-common.h" #include <pulse/pulseaudio.h> #include <string.h> typedef struct java_context { JNIEnv* env; jobject obj; } java_context; extern JNIEnv* pulse_thread_env; void source_callback(pa_context *context, int success, void *userdata) { assert(context); assert(pulse_thread_env); notifyWaitingOperations(pulse_thread_env); } void get_source_volume_callback(pa_context *context, const pa_source_info *i, int eol, void *userdata) { assert(context); assert(pulse_thread_env); if (eol == 0) { // printf("%s\n", i->name); jobject obj = (jobject) userdata; assert(obj); jclass cls = (*pulse_thread_env)->GetObjectClass(pulse_thread_env, obj); assert(cls); jmethodID mid1 = (*pulse_thread_env)->GetMethodID(pulse_thread_env, cls, "update_channels_and_volume", "(IF)V"); assert(mid1); (*pulse_thread_env)->CallVoidMethod(pulse_thread_env, obj, mid1, (int) (i->volume).channels, (float) (i->volume).values[0]) ; } else { notifyWaitingOperations(pulse_thread_env); } } /* * Class: org_classpath_icedtea_pulseaudio_PulseAudioSourcePort * Method: native_update_volume * Signature: ()[B */ JNIEXPORT jbyteArray JNICALL Java_org_classpath_icedtea_pulseaudio_PulseAudioSourcePort_native_1update_1volume (JNIEnv *env, jobject obj) { jclass cls = (*env)->GetObjectClass(env, obj); assert(cls); jfieldID fid = (*env)->GetFieldID(env, cls, "name", "Ljava/lang/String;"); assert(fid); jstring jstr = (*env)->GetObjectField(env, obj, fid); assert(jstr); const char *name = (*env)->GetStringUTFChars(env, jstr, NULL); if (name == NULL) { return NULL; // oome } pa_context* context = (pa_context*) getJavaPointer(env, obj, "contextPointer"); assert(context); obj = (*env)->NewGlobalRef(env, obj); pa_operation *o = pa_context_get_source_info_by_name (context, (char*) name, get_source_volume_callback, obj); assert(o); return convertNativePointerToJava(env, o); } /* * Class: org_classpath_icedtea_pulseaudio_PulseAudioSourcePort * Method: native_set_volume * Signature: (F)[B */ JNIEXPORT jbyteArray JNICALL Java_org_classpath_icedtea_pulseaudio_PulseAudioSourcePort_native_1set_1volume (JNIEnv *env, jobject obj, jfloat value) { jclass cls = (*env)->GetObjectClass(env, obj); assert(cls); jfieldID fid = (*env)->GetFieldID(env, cls, "name", "Ljava/lang/String;"); assert(fid); jstring jstr = (*env)->GetObjectField(env, obj, fid); assert(jstr); const char *name = (*env)->GetStringUTFChars(env, jstr, NULL); if (name == NULL) { return NULL; // oome } pa_context* context = (pa_context*) getJavaPointer(env, obj, "contextPointer"); assert(context); obj = (*env)->NewGlobalRef(env, obj); fid = (*env)->GetFieldID(env, cls, "channels", "I"); assert(fid); jint channels = (*env)->GetIntField(env, obj, fid); pa_cvolume cv; pa_operation *o = pa_context_set_source_volume_by_name (context, (char*) name,pa_cvolume_set(&cv, channels, value), source_callback, obj); assert(o); return convertNativePointerToJava(env, o); }