summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2020-09-13 14:25:03 +0200
committerJosJuice <josjuice@gmail.com>2020-09-13 14:25:14 +0200
commit8bd704304e81a090d4e917be8c53b8780cab71c0 (patch)
treede34471481f7e4f9b7d972c838bd6488f8b7a99a /Source/Android/app/src/main/java
parentb1fecbb71ce256d7c70963414a30501570c2e871 (diff)
Android: Check for granted permission when returning to MainActivity
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/DolphinApplication.java2
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java9
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java8
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java12
4 files changed, 27 insertions, 4 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/DolphinApplication.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/DolphinApplication.java
index 204c7a7edd..99b0a56c80 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/DolphinApplication.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/DolphinApplication.java
@@ -25,7 +25,7 @@ public class DolphinApplication extends Application
Java_GCAdapter.manager = (UsbManager) getSystemService(Context.USB_SERVICE);
Java_WiimoteAdapter.manager = (UsbManager) getSystemService(Context.USB_SERVICE);
- if (PermissionsHandler.hasWriteAccess(getApplicationContext()))
+ if (DirectoryInitialization.shouldStart(getApplicationContext()))
DirectoryInitialization.start(getApplicationContext());
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java
index d96efd27df..eeef714b16 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainActivity.java
@@ -80,7 +80,16 @@ public final class MainActivity extends AppCompatActivity implements MainView
protected void onResume()
{
super.onResume();
+
+ if (DirectoryInitialization.shouldStart(this))
+ {
+ DirectoryInitialization.start(this);
+ new AfterDirectoryInitializationRunner()
+ .run(this, false, this::setPlatformTabsAndStartGameFileCacheService);
+ }
+
mPresenter.addDirIfNeeded(this);
+
if (sShouldRescanLibrary)
{
GameFileCacheService.startRescan(this);
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java
index cf75b07c40..69087ace1c 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java
@@ -63,7 +63,15 @@ public final class TvMainActivity extends FragmentActivity implements MainView
protected void onResume()
{
super.onResume();
+
+ if (DirectoryInitialization.shouldStart(this))
+ {
+ DirectoryInitialization.start(this);
+ GameFileCacheService.startLoad(this);
+ }
+
mPresenter.addDirIfNeeded(this);
+
if (sShouldRescanLibrary)
{
GameFileCacheService.startRescan(this);
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
index a15757647d..4e293dfc4a 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
@@ -53,6 +53,9 @@ public final class DirectoryInitialization
public static void start(Context context)
{
+ if (!isDolphinDirectoryInitializationRunning.compareAndSet(false, true))
+ return;
+
// Can take a few seconds to run, so don't block UI thread.
//noinspection TrivialFunctionalExpressionUsage
((Runnable) () -> init(context)).run();
@@ -60,9 +63,6 @@ public final class DirectoryInitialization
private static void init(Context context)
{
- if (!isDolphinDirectoryInitializationRunning.compareAndSet(false, true))
- return;
-
if (directoryState != DirectoryInitializationState.DOLPHIN_DIRECTORIES_INITIALIZED)
{
if (PermissionsHandler.hasWriteAccess(context))
@@ -196,6 +196,12 @@ public final class DirectoryInitialization
}
}
+ public static boolean shouldStart(Context context)
+ {
+ return !isDolphinDirectoryInitializationRunning.get() &&
+ getDolphinDirectoriesState(context) == DirectoryInitializationState.NOT_YET_INITIALIZED;
+ }
+
public static boolean areDolphinDirectoriesReady()
{
return directoryState == DirectoryInitializationState.DOLPHIN_DIRECTORIES_INITIALIZED;