Android: Parameter to swap dynamic disk

This commit is contained in:
Ender's Games 2018-08-28 03:07:23 -04:00
parent f51f04ba9a
commit 2ceae8b42e
3 changed files with 18 additions and 4 deletions

View File

@ -26,7 +26,7 @@ public final class JNIdc
public static native void initControllers(boolean[] controllers, int[][] peripherals);
public static native void setupMic(Object sip);
public static native void diskSwap();
public static native void diskSwap(String disk);
public static native void vmuSwap();
public static native void setupVmu(Object sip);
public static native void dynarec(int dynarec);

View File

@ -496,7 +496,8 @@ public class OnScreenMenu {
OnClickListener clickDisk = new OnClickListener() {
public void onClick(View v) {
JNIdc.diskSwap();
if (Emulator.bootdisk == null)
JNIdc.diskSwap(null);
dismiss();
}
};

View File

@ -41,7 +41,7 @@ JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_vjoy(JNIEnv * env, jo
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_initControllers(JNIEnv *env, jobject obj, jbooleanArray controllers, jobjectArray peripherals) __attribute__((visibility("default")));
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_setupMic(JNIEnv *env,jobject obj,jobject sip) __attribute__((visibility("default")));
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_diskSwap(JNIEnv *env,jobject obj) __attribute__((visibility("default")));
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_diskSwap(JNIEnv *env,jobject obj,jstring disk) __attribute__((visibility("default")));
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_vmuSwap(JNIEnv *env,jobject obj) __attribute__((visibility("default")));
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_setupVmu(JNIEnv *env,jobject obj,jobject sip) __attribute__((visibility("default")));
@ -445,7 +445,7 @@ JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_destroy(JNIEnv *env,j
dc_term();
}
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_diskSwap(JNIEnv *env,jobject obj)
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_diskSwap(JNIEnv *env,jobject obj,jstring disk)
{
if (settings.imgread.LoadDefaultImage == 1) {
if (!gamedisk) settings.imgread.DefaultImage[0] = '\0';
@ -455,6 +455,19 @@ JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_diskSwap(JNIEnv *env,
settings.imgread.DefaultImage[sizeof(settings.imgread.DefaultImage) - 1] = '\0';
}
DiscSwap();
} else if (disk != NULL) {
settings.imgread.LoadDefaultImage = 1;
const char *P = disk ? env->GetStringUTFChars(disk, 0) : 0;
if (!P) settings.imgread.DefaultImage[0] = '\0';
else {
printf("Got URI: '%s'\n", P);
strncpy(settings.imgread.DefaultImage,
(strlen(P) >= 7) && !memcmp(P, "file://", 7) ? P + 7 : P,
sizeof(settings.imgread.DefaultImage));
settings.imgread.DefaultImage[sizeof(settings.imgread.DefaultImage) - 1] = '\0';
env->ReleaseStringUTFChars(disk, P);
}
DiscSwap();
}
}