diff options
| author | JosJuice <josjuice@gmail.com> | 2021-08-08 14:33:06 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2021-09-21 16:32:47 +0200 |
| commit | 446e2d9119a3c4281e72feefca9bbcd2b1eb21e3 (patch) | |
| tree | 523b3fd028ea69e5fadae5573372b7a637054dd6 /Source/Android/app/src/main/java/org | |
| parent | 2c564a0b9d654d860dcc2832b2492f8e1b94813b (diff) | |
Android: Remove state from EmulationState
Diffstat (limited to 'Source/Android/app/src/main/java/org')
| -rw-r--r-- | Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java | 9 | ||||
| -rw-r--r-- | Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java | 79 |
2 files changed, 21 insertions, 67 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java index 5ab4e15993..123cd6c066 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/NativeLibrary.java @@ -411,12 +411,21 @@ public final class NativeLibrary public static native void StopEmulation(); /** + * Ensures that IsRunning will return true from now on until emulation exits. + * (If this is not called, IsRunning will start returning true at some point + * after calling Run.) + */ + public static native void SetIsBooting(); + + /** * Returns true if emulation is running (or is paused). */ public static native boolean IsRunning(); public static native boolean IsRunningAndStarted(); + public static native boolean IsRunningAndUnpaused(); + /** * Enables or disables CPU block profiling * diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java index 2ea106cb4a..ce35f1e98e 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/EmulationFragment.java @@ -123,8 +123,12 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C @Override public void onPause() { - if (mEmulationState.isRunning() && !NativeLibrary.IsShowingAlertMessage()) - mEmulationState.pause(); + if (NativeLibrary.IsRunningAndUnpaused() && !NativeLibrary.IsShowingAlertMessage()) + { + Log.debug("[EmulationFragment] Pausing emulation."); + NativeLibrary.PauseEmulation(); + } + super.onPause(); } @@ -186,7 +190,8 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C public void stopEmulation() { - mEmulationState.stop(); + Log.debug("[EmulationFragment] Stopping emulation."); + NativeLibrary.StopEmulation(); } public void startConfiguringControls() @@ -214,13 +219,7 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C private static class EmulationState { - private enum State - { - STOPPED, RUNNING, PAUSED - } - private final String[] mGamePaths; - private State state; private boolean mRunWhenSurfaceIsValid; private boolean loadPreviousTemporaryState; private final String temporaryStatePath; @@ -229,56 +228,6 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C { mGamePaths = gamePaths; this.temporaryStatePath = temporaryStatePath; - // Starting state is stopped. - state = State.STOPPED; - } - - // Getters for the current state - - public synchronized boolean isStopped() - { - return state == State.STOPPED; - } - - public synchronized boolean isPaused() - { - return state == State.PAUSED; - } - - public synchronized boolean isRunning() - { - return state == State.RUNNING; - } - - // State changing methods - - public synchronized void stop() - { - if (state != State.STOPPED) - { - Log.debug("[EmulationFragment] Stopping emulation."); - state = State.STOPPED; - NativeLibrary.StopEmulation(); - } - else - { - Log.warning("[EmulationFragment] Stop called while already stopped."); - } - } - - public synchronized void pause() - { - if (state != State.PAUSED) - { - state = State.PAUSED; - Log.debug("[EmulationFragment] Pausing emulation."); - - NativeLibrary.PauseEmulation(); - } - else - { - Log.warning("[EmulationFragment] Pause called while already paused."); - } } public synchronized void run(boolean isActivityRecreated) @@ -288,7 +237,6 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C if (NativeLibrary.IsRunning()) { loadPreviousTemporaryState = false; - state = State.PAUSED; deleteFile(temporaryStatePath); } else @@ -326,8 +274,10 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C private void runWithValidSurface() { mRunWhenSurfaceIsValid = false; - if (state == State.STOPPED) + if (!NativeLibrary.IsRunning()) { + NativeLibrary.SetIsBooting(); + Thread emulationThread = new Thread(() -> { if (loadPreviousTemporaryState) @@ -344,7 +294,7 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C }, "NativeEmulation"); emulationThread.start(); } - else if (state == State.PAUSED) + else { if (!EmulationActivity.getHasUserPausedEmulation() && !NativeLibrary.IsShowingAlertMessage()) @@ -353,11 +303,6 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C NativeLibrary.UnPauseEmulation(); } } - else - { - Log.debug("[EmulationFragment] Bug, run called while already running."); - } - state = State.RUNNING; } } |
