summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java/org
diff options
context:
space:
mode:
authorPierre Bourdon <delroth@gmail.com>2018-11-09 04:27:59 +0100
committerGitHub <noreply@github.com>2018-11-09 04:27:59 +0100
commit98d2e278b066a802296f96221859e0a497a08891 (patch)
treec79a2098f76b6b1888eef39fd04e8e35f9bd7a05 /Source/Android/app/src/main/java/org
parente903d346ea6fefc967f87a4dfc06acdf97acc00f (diff)
parent5f5262ad34ba618dfc66e2e2d2e1bfe6f06b0f61 (diff)
Merge pull request #7551 from zackhow/fixffs
Android: Fix crash on instant rotate
Diffstat (limited to 'Source/Android/app/src/main/java/org')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java33
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java11
2 files changed, 29 insertions, 15 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
index 1093c37a1a..9aa8955416 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java
@@ -185,6 +185,10 @@ public final class EmulationActivity extends AppCompatActivity
{
super.onCreate(savedInstanceState);
+ // Find the EmulationFragment
+ mEmulationFragment = (EmulationFragment) getSupportFragmentManager()
+ .findFragmentById(R.id.frame_emulation_fragment);
+
if (savedInstanceState == null)
{
// Get params we were passed
@@ -196,7 +200,9 @@ public final class EmulationActivity extends AppCompatActivity
}
else
{
- activityRecreated = true;
+ // Could have recreated the activity(rotate) before creating the fragment. If the fragment
+ // doesn't exist, treat this as a new start.
+ activityRecreated = mEmulationFragment != null;
restoreState(savedInstanceState);
}
@@ -212,13 +218,6 @@ public final class EmulationActivity extends AppCompatActivity
int themeId;
if (mDeviceHasTouchScreen)
{
- BooleanSetting lockLandscape =
- (BooleanSetting) mSettings.getSection(Settings.SECTION_INI_CORE)
- .getSetting(SettingsFile.KEY_LOCK_LANDSCAPE);
- // Force landscape if set
- if (lockLandscape == null || lockLandscape.getValue())
- setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
-
themeId = R.style.DolphinEmulationBase;
// Get a handle to the Window containing the UI.
@@ -250,10 +249,20 @@ public final class EmulationActivity extends AppCompatActivity
setContentView(R.layout.activity_emulation);
- // Find or create the EmulationFragment
- mEmulationFragment = (EmulationFragment) getSupportFragmentManager()
- .findFragmentById(R.id.frame_emulation_fragment);
- if (mEmulationFragment == null)
+
+ BooleanSetting lockLandscapeSetting =
+ (BooleanSetting) mSettings.getSection(Settings.SECTION_INI_CORE)
+ .getSetting(SettingsFile.KEY_LOCK_LANDSCAPE);
+ boolean lockLandscape = lockLandscapeSetting == null || lockLandscapeSetting.getValue();
+ // Force landscape if set
+ if (mDeviceHasTouchScreen && lockLandscape)
+ {
+ setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
+ }
+
+ if (!(mDeviceHasTouchScreen && lockLandscape &&
+ getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) &&
+ mEmulationFragment == null)
{
mEmulationFragment = EmulationFragment.newInstance(mPath);
getSupportFragmentManager().beginTransaction()
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
index 42a6bb4911..d1ce48d2c1 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
@@ -3,6 +3,7 @@ package org.dolphinemu.dolphinemu.features.settings.ui;
import android.os.Bundle;
import android.text.TextUtils;
+import org.dolphinemu.dolphinemu.DolphinApplication;
import org.dolphinemu.dolphinemu.NativeLibrary;
import org.dolphinemu.dolphinemu.R;
import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting;
@@ -24,6 +25,7 @@ import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
import org.dolphinemu.dolphinemu.utils.EGLHelper;
import org.dolphinemu.dolphinemu.utils.Log;
+import org.dolphinemu.dolphinemu.utils.TvUtil;
import java.io.File;
import java.util.ArrayList;
@@ -265,9 +267,12 @@ public final class SettingsFragmentPresenter
sl.add(new CheckBoxSetting(SettingsFile.KEY_ENABLE_SAVE_STATES, Settings.SECTION_INI_CORE,
R.string.enable_save_states, R.string.enable_save_states_description, false,
enableSaveState));
- sl.add(new CheckBoxSetting(SettingsFile.KEY_LOCK_LANDSCAPE, Settings.SECTION_INI_CORE,
- R.string.lock_emulation_landscape, R.string.lock_emulation_landscape_desc, true,
- lockToLandscape));
+ if (!TvUtil.isLeanback(DolphinApplication.getAppContext()))
+ {
+ sl.add(new CheckBoxSetting(SettingsFile.KEY_LOCK_LANDSCAPE, Settings.SECTION_INI_CORE,
+ R.string.lock_emulation_landscape, R.string.lock_emulation_landscape_desc, true,
+ lockToLandscape));
+ }
sl.add(new CheckBoxSetting(SettingsFile.KEY_ANALYTICS_ENABLED, Settings.SECTION_ANALYTICS,
R.string.analytics, 0, false, analytics));
}