diff --git a/android/.classpath b/android/.classpath
index a4763d1eec..bb0c759770 100644
--- a/android/.classpath
+++ b/android/.classpath
@@ -4,5 +4,6 @@
+
diff --git a/android/app-android.cpp b/android/app-android.cpp
index 2a9314899a..2d9a7dc322 100644
--- a/android/app-android.cpp
+++ b/android/app-android.cpp
@@ -294,7 +294,7 @@ extern "C" void Java_com_henrikrydgard_libnative_NativeRenderer_displayRender(JN
}
}
-extern "C" void Java_com_henrikrydgard_libnative_NativeApp_audioRender(JNIEnv* env, jclass clazz, jshortArray array) {
+extern "C" jint Java_com_henrikrydgard_libnative_NativeApp_audioRender(JNIEnv* env, jclass clazz, jshortArray array) {
// Too spammy
// ILOG("NativeApp.audioRender");
@@ -305,9 +305,16 @@ extern "C" void Java_com_henrikrydgard_libnative_NativeApp_audioRender(JNIEnv* e
if (buf_size) {
short *data = env->GetShortArrayElements(array, 0);
int samples = buf_size / 2;
- NativeMix(data, samples);
- env->ReleaseShortArrayElements(array, data, 0);
+ samples = NativeMix(data, samples);
+ if (samples != 0) {
+ env->ReleaseShortArrayElements(array, data, 0);
+ return samples * 2;
+ } else {
+ env->ReleaseShortArrayElements(array, data, JNI_ABORT);
+ return 0;
+ }
}
+ return 0;
}
extern "C" void JNICALL Java_com_henrikrydgard_libnative_NativeApp_touch
diff --git a/android/src/com/henrikrydgard/libnative/NativeApp.java b/android/src/com/henrikrydgard/libnative/NativeApp.java
index 4e02203621..79fa414ff5 100644
--- a/android/src/com/henrikrydgard/libnative/NativeApp.java
+++ b/android/src/com/henrikrydgard/libnative/NativeApp.java
@@ -21,7 +21,7 @@ public class NativeApp {
public static native void joystickEvent(float x, float y);
// will only be called between init() and shutdown()
- public static native void audioRender(short[] buffer);
+ public static native int audioRender(short[] buffer);
// Sensor/input data. These are asynchronous, beware!
public static native void touch(float x, float y, int data, int pointerId);
diff --git a/android/src/com/henrikrydgard/libnative/NativeAudioPlayer.java b/android/src/com/henrikrydgard/libnative/NativeAudioPlayer.java
index d6fd249407..4b1c7a2fd7 100644
--- a/android/src/com/henrikrydgard/libnative/NativeAudioPlayer.java
+++ b/android/src/com/henrikrydgard/libnative/NativeAudioPlayer.java
@@ -81,8 +81,11 @@ public class NativeAudioPlayer {
audioTrack.play();
Log.i(TAG, "Playing... minBuffersize = " + buffer_size);
while (playing_) {
- NativeApp.audioRender(buffer);
- audioTrack.write(buffer, 0, buffer_size);
+ int validShorts = NativeApp.audioRender(buffer);
+ if (validShorts != 0) {
+ audioTrack.write(buffer, 0, validShorts);
+ }
+ Thread.yield();
}
audioTrack.stop();
audioTrack.release();