diff -r 33924ff4af50 -r 27e5857da6af project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/GameConnection.java --- a/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/GameConnection.java Wed Aug 22 01:30:56 2012 +0200 +++ b/project_files/Android-build/SDL-android-project/src/org/hedgewars/hedgeroid/GameConnection.java Thu Aug 23 18:28:33 2012 +0200 @@ -24,6 +24,7 @@ import org.hedgewars.hedgeroid.Datastructures.GameConfig; import org.hedgewars.hedgeroid.frontlib.Flib; import org.hedgewars.hedgeroid.frontlib.Frontlib; +import org.hedgewars.hedgeroid.frontlib.Frontlib.ByteArrayPtr; import org.hedgewars.hedgeroid.frontlib.Frontlib.BytesCallback; import org.hedgewars.hedgeroid.frontlib.Frontlib.GameSetupPtr; import org.hedgewars.hedgeroid.frontlib.Frontlib.GameconnPtr; @@ -41,7 +42,6 @@ import android.os.Looper; import android.util.Log; -import com.sun.jna.Memory; import com.sun.jna.Pointer; /** @@ -172,8 +172,8 @@ // runs on the IPCThread private final BytesCallback engineMessageCb = new BytesCallback() { - public void callback(Pointer context, Pointer buffer, NativeSizeT size) { - netplay.sendEngineMessage(buffer.getByteArray(0, size.intValue())); + public void callback(Pointer context, ByteArrayPtr buffer, NativeSizeT size) { + netplay.sendEngineMessage(buffer.deref(size.intValue())); } }; @@ -205,9 +205,8 @@ public void onEngineMessage(final byte[] em) { handler.post(new Runnable() { public void run() { - Memory mem = new Memory(em.length); - mem.write(0, em, 0, em.length); - Flib.INSTANCE.flib_gameconn_send_enginemsg(conn, mem, NativeSizeT.valueOf(em.length)); + ByteArrayPtr ptr = ByteArrayPtr.createJavaOwned(em); + Flib.INSTANCE.flib_gameconn_send_enginemsg(conn, ptr, NativeSizeT.valueOf(em.length)); } }); }