From dace72166e5250e2ea0a9beb6451f5e4da9e50e2 Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Sun, 5 Jun 2011 09:44:57 +0000 Subject: Android: Greatly simplify the pcm callback mechanism on both, the Java and the C side. Should be more reliable now (if the old wasn't already). git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29963 a1c6a512-1295-4272-9138-f99709370657 --- android/src/org/rockbox/RockboxPCM.java | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'android') diff --git a/android/src/org/rockbox/RockboxPCM.java b/android/src/org/rockbox/RockboxPCM.java index 48178fc..eaccddb 100644 --- a/android/src/org/rockbox/RockboxPCM.java +++ b/android/src/org/rockbox/RockboxPCM.java @@ -239,14 +239,14 @@ public class RockboxPCM extends AudioTrack } } - public native void pcmSamplesToByteArray(byte[] dest); + public native int nativeWrite(byte[] temp, int len); private class PCMListener implements OnPlaybackPositionUpdateListener { - private byte[] buf; - public PCMListener(int refill_bufsize) + byte[] pcm_data; + public PCMListener(int _refill_bufsize) { - buf = new byte[refill_bufsize]; + pcm_data = new byte[_refill_bufsize]; } public void onMarkerReached(AudioTrack track) @@ -254,8 +254,7 @@ public class RockboxPCM extends AudioTrack /* push new data to the hardware */ RockboxPCM pcm = (RockboxPCM)track; int result = -1; - pcm.pcmSamplesToByteArray(buf); - result = track.write(buf, 0, buf.length); + result = pcm.nativeWrite(pcm_data, pcm_data.length); if (result >= 0) { switch(getPlayState()) @@ -269,6 +268,8 @@ public class RockboxPCM extends AudioTrack break; } } + else /* stop on error */ + stop(); } public void onPeriodicNotification(AudioTrack track) -- cgit v1.1