Android: Improved null checking, Optimize
This commit is contained in:
parent
e19212ee9e
commit
3eba9ae6ad
|
@ -111,7 +111,7 @@ public class Emulator extends Application {
|
|||
JNIdc.pvrrender(mPrefs.getBoolean(pref_pvrrender, pvrrender) ? 1 : 0);
|
||||
JNIdc.syncedrender(mPrefs.getBoolean(pref_syncedrender, syncedrender) ? 1 : 0);
|
||||
JNIdc.modvols(mPrefs.getBoolean(pref_modvols, modvols) ? 1 : 0);
|
||||
JNIdc.bootdisk(mPrefs.getString(pref_bootdisk, null));
|
||||
JNIdc.bootdisk(mPrefs.getString(pref_bootdisk, bootdisk));
|
||||
}
|
||||
|
||||
static {
|
||||
|
|
|
@ -2,7 +2,6 @@ package com.reicast.emulator;
|
|||
|
||||
import android.app.AlertDialog;
|
||||
import android.content.Context;
|
||||
import android.content.DialogInterface;
|
||||
import android.content.SharedPreferences;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.BitmapFactory;
|
||||
|
@ -10,10 +9,8 @@ import android.graphics.drawable.BitmapDrawable;
|
|||
import android.graphics.drawable.Drawable;
|
||||
import android.net.ConnectivityManager;
|
||||
import android.net.NetworkInfo;
|
||||
import android.net.Uri;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.Build;
|
||||
import android.os.Vibrator;
|
||||
import android.view.View;
|
||||
import android.view.View.OnLongClickListener;
|
||||
import android.widget.ImageView;
|
||||
|
@ -136,12 +133,40 @@ public class XMLParser extends AsyncTask<String, Integer, String> {
|
|||
xmlParser.setViewParent(mContext.get(), childview.get(), mCallback);
|
||||
xmlParser.setGameID(getValue(root, "id"));
|
||||
xmlParser.execute(game_name);
|
||||
} else {
|
||||
game_name = getValue(root, "GameTitle") + " ["
|
||||
+ FilenameUtils.getExtension(game.getName())
|
||||
.toUpperCase(Locale.getDefault()) + "]";
|
||||
} else if (root != null) {
|
||||
String name = getValue(root, "GameTitle");
|
||||
if (!name.equals(""))
|
||||
game_name = name + " [" + FilenameUtils.getExtension(
|
||||
game.getName()).toUpperCase(Locale.getDefault()) + "]";
|
||||
game_details = getValue(root, "Overview");
|
||||
Element images = (Element) root.getElementsByTagName("Images").item(0);
|
||||
getBoxart((Element) root.getElementsByTagName("Images").item(0));
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
if (childview.get() != null) {
|
||||
((TextView) childview.get().findViewById(R.id.item_name)).setText(game_name);
|
||||
|
||||
if (mPrefs.getBoolean(Config.pref_gamedetails, false)) {
|
||||
childview.get().findViewById(R.id.childview).setOnLongClickListener(
|
||||
new OnLongClickListener() {
|
||||
public boolean onLongClick(View view) {
|
||||
new AlertDialog.Builder(mContext.get()).setCancelable(true).setIcon(game_icon)
|
||||
.setTitle(mContext.get().getString(R.string.game_details, game_name))
|
||||
.setMessage(game_details).create().show();
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
childview.get().setTag(game_name);
|
||||
}
|
||||
}
|
||||
|
||||
private void getBoxart(Element images) {
|
||||
Element boxart = null;
|
||||
if (images.getElementsByTagName("boxart").getLength() > 1) {
|
||||
boxart = (Element) images.getElementsByTagName("boxart").item(1);
|
||||
|
@ -171,31 +196,8 @@ public class XMLParser extends AsyncTask<String, Integer, String> {
|
|||
});
|
||||
icon.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
|
||||
"https://cdn.thegamesdb.net/images/thumb/"
|
||||
+ getElementValue(boxart).replace("original/", ""));
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
if (childview.get() != null) {
|
||||
((TextView) childview.get().findViewById(R.id.item_name)).setText(game_name);
|
||||
|
||||
if (mPrefs.getBoolean(Config.pref_gamedetails, false)) {
|
||||
childview.get().findViewById(R.id.childview).setOnLongClickListener(
|
||||
new OnLongClickListener() {
|
||||
public boolean onLongClick(View view) {
|
||||
new AlertDialog.Builder(mContext.get()).setCancelable(true).setIcon(game_icon)
|
||||
.setTitle(mContext.get().getString(R.string.game_details, game_name))
|
||||
.setMessage(game_details).create().show();
|
||||
return true;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
childview.get().setTag(game_name);
|
||||
+ getElementValue(boxart)
|
||||
.replace("original/", ""));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -271,8 +273,12 @@ public class XMLParser extends AsyncTask<String, Integer, String> {
|
|||
}
|
||||
|
||||
private String getValue(Element item, String str) {
|
||||
if (item != null) {
|
||||
NodeList n = item.getElementsByTagName(str);
|
||||
return this.getElementValue(n.item(0));
|
||||
} else {
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
private String getElementValue(Node elem) {
|
||||
|
|
|
@ -461,23 +461,24 @@ public class OptionsFragment extends Fragment {
|
|||
|| (event.getKeyCode() == KeyEvent.KEYCODE_ENTER
|
||||
&& event.getAction() == KeyEvent.ACTION_DOWN)) {
|
||||
if (event == null || !event.isShiftPressed()) {
|
||||
if (v.getText() != "null") {
|
||||
String disk = v.getText().toString();
|
||||
if (disk.substring(disk.lastIndexOf("/") + 1).length() == 0) {
|
||||
String disk = null;
|
||||
if (v.getText() != null) {
|
||||
disk = v.getText().toString();
|
||||
if (disk.equals("") || disk.substring(
|
||||
disk.lastIndexOf("/") + 1).length() == 0) {
|
||||
disk = null;
|
||||
mPrefs.edit().remove(Emulator.pref_bootdisk).apply();
|
||||
} else {
|
||||
if (!disk.contains("/"))
|
||||
disk = game_directory + "/" + disk;
|
||||
if (new File(disk).exists()) {
|
||||
mPrefs.edit().putString(Emulator.pref_bootdisk, disk).apply();
|
||||
} else {
|
||||
if (!new File(disk).exists())
|
||||
disk = null;
|
||||
mPrefs.edit().remove(Emulator.pref_bootdisk).apply();
|
||||
}
|
||||
}
|
||||
v.setText(disk);
|
||||
}
|
||||
if (disk == null)
|
||||
mPrefs.edit().remove(Emulator.pref_bootdisk).apply();
|
||||
else
|
||||
mPrefs.edit().putString(Emulator.pref_bootdisk, disk).apply();
|
||||
hideSoftKeyBoard();
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -203,19 +203,20 @@ public class PGConfigFragment extends Fragment {
|
|||
|| (event.getKeyCode() == KeyEvent.KEYCODE_ENTER
|
||||
&& event.getAction() == KeyEvent.ACTION_DOWN)) {
|
||||
if (event == null || !event.isShiftPressed()) {
|
||||
if (v.getText() != "null") {
|
||||
String disk = v.getText().toString();
|
||||
if (disk.substring(disk.lastIndexOf("/") + 1).length() == 0) {
|
||||
String disk;
|
||||
if (v.getText() != null) {
|
||||
disk = v.getText().toString();
|
||||
if (disk.equals("") || disk.substring(
|
||||
disk.lastIndexOf("/") + 1).length() == 0) {
|
||||
disk = null;
|
||||
} else {
|
||||
if (!disk.contains("/"))
|
||||
disk = mPrefs.getString(Config.pref_games,
|
||||
Environment.getExternalStorageDirectory()
|
||||
.getAbsolutePath()) + "/" + disk;
|
||||
if (!new File(disk).exists()) {
|
||||
if (!new File(disk).exists())
|
||||
disk = null;
|
||||
}
|
||||
}
|
||||
v.setText(disk);
|
||||
}
|
||||
hideSoftKeyBoard();
|
||||
|
|
|
@ -496,7 +496,7 @@ public class OnScreenMenu {
|
|||
|
||||
OnClickListener clickDisk = new OnClickListener() {
|
||||
public void onClick(View v) {
|
||||
if (Emulator.bootdisk == null)
|
||||
if (Emulator.bootdisk != null)
|
||||
JNIdc.diskSwap(null);
|
||||
dismiss();
|
||||
}
|
||||
|
|
|
@ -188,6 +188,7 @@ extern int screen_width,screen_height;
|
|||
|
||||
static u64 tvs_base;
|
||||
static char gamedisk[256];
|
||||
static char bootdisk[256];
|
||||
|
||||
// Additonal controllers 2, 3 and 4 connected ?
|
||||
static bool add_controllers[3] = { false, false, false };
|
||||
|
@ -309,16 +310,14 @@ JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_config(JNIEnv *env,jo
|
|||
|
||||
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_bootdisk(JNIEnv *env,jobject obj, jstring disk) {
|
||||
if (disk != NULL) {
|
||||
settings.imgread.LoadDefaultImage = 1;
|
||||
const char *P = disk ? env->GetStringUTFChars(disk, 0) : 0;
|
||||
settings.imgread.LoadDefaultImage = true;
|
||||
const char *P = env->GetStringUTFChars(disk, 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));
|
||||
printf("Boot Disk 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -330,14 +329,12 @@ JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_init(JNIEnv *env,jobj
|
|||
if (!P) gamedisk[0] = '\0';
|
||||
else
|
||||
{
|
||||
printf("Got URI: '%s'\n",P);
|
||||
printf("Game Disk URI: '%s'\n",P);
|
||||
strncpy(gamedisk,(strlen(P)>=7)&&!memcmp(P,"file://",7)? P+7:P,sizeof(gamedisk));
|
||||
gamedisk[sizeof(gamedisk)-1] = '\0';
|
||||
env->ReleaseStringUTFChars(fileName,P);
|
||||
}
|
||||
|
||||
printf("Opening file: '%s'\n",gamedisk);
|
||||
|
||||
// Initialize platform-specific stuff
|
||||
common_linux_setup();
|
||||
|
||||
|
@ -356,6 +353,27 @@ JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_init(JNIEnv *env,jobj
|
|||
ThreadHandler(gamedisk);
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_diskSwap(JNIEnv *env,jobject obj,jstring disk)
|
||||
{
|
||||
if (settings.imgread.LoadDefaultImage) {
|
||||
strncpy(settings.imgread.DefaultImage, gamedisk, sizeof(settings.imgread.DefaultImage));
|
||||
settings.imgread.DefaultImage[sizeof(settings.imgread.DefaultImage) - 1] = '\0';
|
||||
DiscSwap();
|
||||
} else if (disk != NULL) {
|
||||
settings.imgread.LoadDefaultImage = true;
|
||||
const char *P = env->GetStringUTFChars(disk, 0);
|
||||
if (!P) settings.imgread.DefaultImage[0] = '\0';
|
||||
else {
|
||||
printf("Swap Disk 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();
|
||||
}
|
||||
}
|
||||
|
||||
#define SAMPLE_COUNT 512
|
||||
|
||||
JNIEnv* jenv; //we are abusing the f*** out of this poor guy
|
||||
|
@ -445,32 +463,6 @@ 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,jstring disk)
|
||||
{
|
||||
if (settings.imgread.LoadDefaultImage == 1) {
|
||||
if (!gamedisk) settings.imgread.DefaultImage[0] = '\0';
|
||||
else {
|
||||
printf("Got URI: '%s'\n", gamedisk);
|
||||
strncpy(settings.imgread.DefaultImage, gamedisk, sizeof(settings.imgread.DefaultImage));
|
||||
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();
|
||||
}
|
||||
}
|
||||
|
||||
JNIEXPORT void JNICALL Java_com_reicast_emulator_emu_JNIdc_vmuSwap(JNIEnv *env,jobject obj)
|
||||
{
|
||||
maple_device* olda = MapleDevices[0][0];
|
||||
|
|
Loading…
Reference in New Issue