Android: Improved null checking, Optimize

This commit is contained in:
Ender's Games 2018-08-28 15:10:18 -04:00
parent e19212ee9e
commit 3eba9ae6ad
6 changed files with 95 additions and 95 deletions

View File

@ -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 {

View File

@ -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) {

View File

@ -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;
}

View File

@ -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();

View File

@ -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();
}

View File

@ -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];