OSDN Git Service

[fixed] OpenALSound.setup() threw non multiple of 4 buffers at alBufferData. Shit...
authorbadlogicgames <badlogicgames@6c4fd544-2939-11df-bb46-9574ba5d0bfa>
Mon, 24 Jan 2011 23:49:12 +0000 (23:49 +0000)
committerbadlogicgames <badlogicgames@6c4fd544-2939-11df-bb46-9574ba5d0bfa>
Mon, 24 Jan 2011 23:49:12 +0000 (23:49 +0000)
backends/gdx-openal/src/com/badlogic/gdx/backends/openal/OpenALSound.java

index d8d2743..d993708 100644 (file)
@@ -14,6 +14,7 @@
 package com.badlogic.gdx.backends.openal;\r
 \r
 import java.nio.ByteBuffer;\r
+import java.nio.ByteOrder;\r
 \r
 import com.badlogic.gdx.audio.Sound;\r
 \r
@@ -32,13 +33,15 @@ public class OpenALSound implements Sound {
        }\r
 \r
        void setup (byte[] pcm, int channels, int sampleRate) {\r
-               ByteBuffer buffer = ByteBuffer.allocateDirect(pcm.length);\r
-               buffer.put(pcm);\r
+               int bytes = pcm.length - (pcm.length%(channels>1?4:2));\r
+               ByteBuffer buffer = ByteBuffer.allocateDirect(bytes);\r
+               buffer.order(ByteOrder.nativeOrder());\r
+               buffer.put(pcm, 0, bytes);\r
                buffer.flip();\r
 \r
                if (bufferID == -1) {\r
                        bufferID = alGenBuffers();\r
-                       alBufferData(bufferID, channels > 1 ? AL_FORMAT_STEREO16 : AL_FORMAT_MONO16, buffer, sampleRate);\r
+                       alBufferData(bufferID, channels > 1 ? AL_FORMAT_STEREO16 : AL_FORMAT_MONO16, buffer.asShortBuffer(), sampleRate);\r
                }\r
        }\r
 \r