diff --git a/core/nullDC.cpp b/core/nullDC.cpp
index 6f2f0665e..c10639008 100755
--- a/core/nullDC.cpp
+++ b/core/nullDC.cpp
@@ -142,7 +142,7 @@ int dc_init(int argc,wchar* argv[])
{
return 69;
}
-
+#ifndef _ANDROID
if(!cfgOpen())
{
msgboxf("Unable to open config file",MBX_ICONERROR);
@@ -150,7 +150,6 @@ int dc_init(int argc,wchar* argv[])
}
LoadSettings();
-#ifndef _ANDROID
os_CreateWindow();
#endif
diff --git a/shell/android/res/layout/configure_fragment.xml b/shell/android/res/layout/configure_fragment.xml
index c9027e27c..f50b0d014 100644
--- a/shell/android/res/layout/configure_fragment.xml
+++ b/shell/android/res/layout/configure_fragment.xml
@@ -326,33 +326,34 @@
-
+ android:gravity="center_vertical" >
+ android:layout_weight="1"
+ android:gravity="right" >
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/shell/android/res/values/strings.xml b/shell/android/res/values/strings.xml
index 689bf02f6..13d476a95 100644
--- a/shell/android/res/values/strings.xml
+++ b/shell/android/res/values/strings.xml
@@ -34,6 +34,8 @@
Available Dreamcast Games
+ Previous Crash Detected
+
Customize Touch Controls
Launch Editor
Touch Vibration
diff --git a/shell/android/src/com/reicast/emulator/MainActivity.java b/shell/android/src/com/reicast/emulator/MainActivity.java
index 9454e60d2..5bd870c42 100644
--- a/shell/android/src/com/reicast/emulator/MainActivity.java
+++ b/shell/android/src/com/reicast/emulator/MainActivity.java
@@ -25,7 +25,6 @@ import android.view.View.OnTouchListener;
import android.widget.TextView;
import android.widget.Toast;
-import com.android.util.DreamTime;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.OnOpenListener;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
@@ -65,22 +64,19 @@ public class MainActivity extends SlidingFragmentActivity implements
public void uncaughtException(Thread t, Throwable error) {
if (error != null) {
Log.e("com.reicast.emulator", error.getMessage());
- Toast.makeText(MainActivity.this,
- getString(R.string.platform),
- Toast.LENGTH_SHORT).show();
- GenerateLogs mGenerateLogs = new GenerateLogs(MainActivity.this);
- mGenerateLogs.setUnhandled(error.getMessage());
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
- mGenerateLogs.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
- home_directory);
- } else {
- mGenerateLogs.execute(home_directory);
- }
+ mPrefs.edit().putString("prior_error", error.getMessage()).commit();
+ MainActivity.this.finish();
}
}
};
Thread.setDefaultUncaughtExceptionHandler(mUEHandler);
+ String prior_error = mPrefs.getString("prior_error", null);
+ if (!prior_error.equals(null)) {
+ initiateReport(prior_error);
+ mPrefs.edit().remove("prior_error").commit();
+ }
+
// Check that the activity is using the layout version with
// the fragment_container FrameLayout
if (findViewById(R.id.fragment_container) != null) {
@@ -264,6 +260,37 @@ public class MainActivity extends SlidingFragmentActivity implements
}
+ private void initiateReport(final String error) {
+ AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
+ builder.setTitle(getString(R.string.report_issue));
+ builder.setMessage(error);
+ builder.setNegativeButton("Cancel",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ dialog.dismiss();
+ }
+ });
+ builder.setPositiveButton("Report",
+ new DialogInterface.OnClickListener() {
+ public void onClick(DialogInterface dialog, int which) {
+ Toast.makeText(MainActivity.this,
+ getString(R.string.platform),
+ Toast.LENGTH_SHORT).show();
+ GenerateLogs mGenerateLogs = new GenerateLogs(MainActivity.this);
+ mGenerateLogs.setUnhandled(error);
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
+ mGenerateLogs.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR,
+ home_directory);
+ } else {
+ mGenerateLogs.execute(home_directory);
+ }
+ dialog.dismiss();
+ }
+ });
+ builder.create();
+ builder.show();
+ }
+
public static boolean isBiosExisting() {
File bios = new File(home_directory, "data/dc_boot.bin");
return bios.exists();
diff --git a/shell/android/src/com/reicast/emulator/config/ConfigureFragment.java b/shell/android/src/com/reicast/emulator/config/ConfigureFragment.java
index 2b8abefc6..71a7cb069 100644
--- a/shell/android/src/com/reicast/emulator/config/ConfigureFragment.java
+++ b/shell/android/src/com/reicast/emulator/config/ConfigureFragment.java
@@ -1,10 +1,6 @@
package com.reicast.emulator.config;
import java.io.File;
-import java.io.FileOutputStream;
-import java.util.Scanner;
-
-import org.apache.commons.lang3.StringUtils;
import android.app.Activity;
import android.content.SharedPreferences;
@@ -16,7 +12,6 @@ import android.preference.PreferenceManager;
import android.support.v4.app.Fragment;
import android.text.Editable;
import android.text.TextWatcher;
-import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -48,7 +43,7 @@ public class ConfigureFragment extends Fragment {
public static boolean dynarecopt = true;
public static boolean idleskip = true;
- public static boolean unstableopt = true;
+ public static boolean unstableopt = false;
public static int cable = 3;
public static int dcregion = 3;
public static int broadcast = 4;
@@ -371,39 +366,5 @@ public class ConfigureFragment extends Fragment {
ConfigureFragment.cheatdisk);
JNIdc.cheatdisk(ConfigureFragment.cheatdisk);
JNIdc.dreamtime(DreamTime.getDreamtime());
-
-// StringBuilder rebuildFile = new StringBuilder();
-// rebuildFile.append("[config]" + "\n");
-// rebuildFile.append("Dynarec.Enabled="
-// + String.valueOf(ConfigureFragment.dynarecopt ? 1 : 0)
-// + "\n");
-// rebuildFile.append("Dynarec.idleskip=1" + "\n");
-// rebuildFile.append("Dynarec.unstable-opt="
-// + String.valueOf(ConfigureFragment.unstableopt ? 1 : 0)
-// + "\n");
-// rebuildFile.append("Dreamcast.Cable=3" + "\n");
-// rebuildFile.append("Dreamcast.RTC=" + DreamTime.getDreamtime()
-// + "\n");
-// rebuildFile.append("Dreamcast.Region="
-// + String.valueOf(ConfigureFragment.dcregion) + "\n");
-// rebuildFile.append("Dreamcast.Broadcast=4" + "\n");
-// rebuildFile.append("aica.LimitFPS="
-// + String.valueOf(ConfigureFragment.limitfps ? 1 : 0)
-// + "\n");
-// rebuildFile.append("aica.NoBatch=0" + "\n");
-// rebuildFile.append("rend.UseMipmaps="
-// + String.valueOf(ConfigureFragment.mipmaps ? 1 : 0)
-// + "\n");
-// rebuildFile.append("rend.WideScreen="
-// + String.valueOf(ConfigureFragment.widescreen ? 1 : 0)
-// + "\n");
-// rebuildFile.append("pvr.Subdivide=0" + "\n");
-// rebuildFile.append("ta.skip="
-// + String.valueOf(ConfigureFragment.frameskip) + "\n");
-// rebuildFile.append("pvr.rend="
-// + String.valueOf(ConfigureFragment.pvrrender ? 1 : 0)
-// + "\n");
-// rebuildFile.append("image=" + ConfigureFragment.cheatdisk
-// + "\n");
}
}