summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorzackhow <zackhow@gmail.com>2018-11-06 17:05:43 -0500
committerzackhow <zackhow@gmail.com>2018-11-07 19:44:48 -0500
commit0446a58ec5db04ade03f24fdb091bc4513cf67b4 (patch)
treeec0fc530368ecee020d789f6a6895e273189863b /Source/Android/app/src/main/java
parent710b893b914bcc1e812f1a63fdb9a143ff682561 (diff)
Android: Fix crash on instant rotate
Delay the creation of the emulation fragment if: the device is a phone, if emulation should be locked to landscape, and the current orientation is portrait.
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java33
1 files changed, 21 insertions, 12 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()