diff --git a/src/jni_driver.cpp b/src/jni_driver.cpp index 37d15787..806a0074 100644 --- a/src/jni_driver.cpp +++ b/src/jni_driver.cpp @@ -42,12 +42,7 @@ void Pandroid::onSmdhLoaded(const std::vector &smdh){ jbyteArray result = env->NewByteArray(size); - jbyte buffer[size]; - - for(int i = 0; i < size; i++){ - buffer[i] = (jbyte) smdh[i]; - } - env->SetByteArrayRegion(result, 0, size, buffer); + env->SetByteArrayRegion(result, 0, size, (jbyte*)smdh.data()); auto clazz = env->FindClass(alberClass); diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/AlberDriver.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/AlberDriver.java index fe808548..2a496693 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/AlberDriver.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/AlberDriver.java @@ -24,8 +24,9 @@ public class AlberDriver { public static native void TouchScreenDown(int x, int y); public static void OnSmdhLoaded(byte[] buffer) { - Log.i(Constants.LOG_TAG, "Loaded rom smdh"); SMDH smdh = new SMDH(buffer); + Log.i(Constants.LOG_TAG, "Loaded rom SDMH"); + Log.i(Constants.LOG_TAG, String.format("Are you playing '%s' published by '%s'", smdh.getTitle(), smdh.getPublisher())); GameMetadata game = GameUtils.getCurrentGame(); GameUtils.removeGame(game); GameUtils.addGame(GameMetadata.applySMDH(game, smdh)); diff --git a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/app/GameActivity.java b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/app/GameActivity.java index fc622cd6..9c241eba 100644 --- a/src/pandroid/app/src/main/java/com/panda3ds/pandroid/app/GameActivity.java +++ b/src/pandroid/app/src/main/java/com/panda3ds/pandroid/app/GameActivity.java @@ -13,6 +13,7 @@ import android.widget.Toast; import androidx.annotation.Nullable; +import com.panda3ds.pandroid.AlberDriver; import com.panda3ds.pandroid.R; import com.panda3ds.pandroid.app.game.AlberInputListener; import com.panda3ds.pandroid.input.InputHandler; @@ -80,4 +81,12 @@ public class GameActivity extends BaseActivity { return super.dispatchGenericMotionEvent(ev); } + + @Override + protected void onDestroy() { + if(AlberDriver.HasRomLoaded()){ + AlberDriver.Finalize(); + } + super.onDestroy(); + } }