diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/EmulationActivity.java b/android/app/src/main/java/com/github/stenzek/duckstation/EmulationActivity.java index bd5b77d02..32b299b28 100644 --- a/android/app/src/main/java/com/github/stenzek/duckstation/EmulationActivity.java +++ b/android/app/src/main/java/com/github/stenzek/duckstation/EmulationActivity.java @@ -36,6 +36,7 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde */ private SharedPreferences mPreferences; private boolean mWasDestroyed = false; + private boolean mStopRequested = false; private boolean mWasPausedOnSurfaceLoss = false; private boolean mApplySettingsOnSurfaceRestored = false; private String mGameTitle = null; @@ -101,7 +102,7 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde public void onEmulationStopped() { runOnUiThread(() -> { AndroidHostInterface.getInstance().stopEmulationThread(); - if (!mWasDestroyed) + if (!mWasDestroyed && !mStopRequested) finish(); }); } @@ -162,7 +163,8 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde Log.i("EmulationActivity", "Surface destroyed"); // Save the resume state in case we never get back again... - AndroidHostInterface.getInstance().saveResumeState(true); + if (!mStopRequested) + AndroidHostInterface.getInstance().saveResumeState(true); mWasPausedOnSurfaceLoss = AndroidHostInterface.getInstance().isEmulationThreadPaused(); AndroidHostInterface.getInstance().pauseEmulationThread(true); @@ -292,6 +294,7 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde case 4: // Quit { + mStopRequested = true; finish(); return; } diff --git a/android/app/src/main/java/com/github/stenzek/duckstation/MainActivity.java b/android/app/src/main/java/com/github/stenzek/duckstation/MainActivity.java index f29c22a99..789d297e9 100644 --- a/android/app/src/main/java/com/github/stenzek/duckstation/MainActivity.java +++ b/android/app/src/main/java/com/github/stenzek/duckstation/MainActivity.java @@ -54,6 +54,11 @@ public class MainActivity extends AppCompatActivity { private ListView mGameListView; private boolean mHasExternalStoragePermissions = false; + private boolean shouldResumeStateByDefault() { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); + return prefs.getBoolean("Main/SaveStateOnExit", true); + } + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -71,7 +76,7 @@ public class MainActivity extends AppCompatActivity { findViewById(R.id.fab_resume).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - startEmulation(null, true); + startEmulation(null, shouldResumeStateByDefault()); } }); @@ -82,7 +87,7 @@ public class MainActivity extends AppCompatActivity { mGameListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { - startEmulation(mGameList.getEntry(position).getPath(), true); + startEmulation(mGameList.getEntry(position).getPath(), shouldResumeStateByDefault()); } }); mGameListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {