From 8239d464b97d7d2f4cce3202275babf7d501e437 Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Tue, 4 May 2021 01:14:24 +1000 Subject: [PATCH] Android: Fix pause menu getting stuck open on some settings --- .../stenzek/duckstation/EmulationActivity.java | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) 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 4c14f5a86..6a2f2833e 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 @@ -55,6 +55,7 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde private String mGameTitle = null; private String mGameCoverPath = null; private EmulationSurfaceView mContentView; + private MenuDialogFragment mPauseMenu; private boolean getBooleanSetting(String key, boolean defaultValue) { return mPreferences.getBoolean(key, defaultValue); @@ -257,6 +258,9 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde public void surfaceDestroyed(SurfaceHolder holder) { Log.i("EmulationActivity", "Surface destroyed"); + if (mPauseMenu != null) + mPauseMenu.close(false); + // Save the resume state in case we never get back again... if (AndroidHostInterface.getInstance().isEmulationThreadRunning() && !mStopRequested) AndroidHostInterface.getInstance().saveResumeState(true); @@ -452,8 +456,11 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde AndroidHostInterface.getInstance().pauseEmulationThread(true); } - final MenuDialogFragment fragment = new MenuDialogFragment(this); - fragment.show(getSupportFragmentManager(), "MenuDialogFragment"); + if (mPauseMenu != null) + mPauseMenu.close(false); + + mPauseMenu = new MenuDialogFragment(this); + mPauseMenu.show(getSupportFragmentManager(), "MenuDialogFragment"); } private void showSaveStateMenu(boolean saving) { @@ -842,9 +849,11 @@ public class EmulationActivity extends AppCompatActivity implements SurfaceHolde if (resumeGame) emulationActivity.onMenuClosed(); + + emulationActivity.mPauseMenu = null; } - private void close(boolean resumeGame) { + public void close(boolean resumeGame) { dismiss(); onClosed(resumeGame); }