diff --git a/Source/Android/app/src/main/AndroidManifest.xml b/Source/Android/app/src/main/AndroidManifest.xml
index 147b658ad3..00be3bd1b6 100644
--- a/Source/Android/app/src/main/AndroidManifest.xml
+++ b/Source/Android/app/src/main/AndroidManifest.xml
@@ -85,7 +85,7 @@
-
+
{
if (directoryInitializationState ==
- DirectoryInitializationService.DirectoryInitializationState.DOLPHIN_DIRECTORIES_INITIALIZED)
+ DirectoryInitialization.DirectoryInitializationState.DOLPHIN_DIRECTORIES_INITIALIZED)
{
play(playAction);
}
else if (directoryInitializationState ==
- DirectoryInitializationService.DirectoryInitializationState.EXTERNAL_STORAGE_PERMISSION_NEEDED)
+ DirectoryInitialization.DirectoryInitializationState.EXTERNAL_STORAGE_PERMISSION_NEEDED)
{
Toast.makeText(this, R.string.write_permission_needed, Toast.LENGTH_SHORT)
.show();
}
else if (directoryInitializationState ==
- DirectoryInitializationService.DirectoryInitializationState.CANT_FIND_EXTERNAL_STORAGE)
+ DirectoryInitialization.DirectoryInitializationState.CANT_FIND_EXTERNAL_STORAGE)
{
Toast.makeText(this, R.string.external_storage_not_mounted, Toast.LENGTH_SHORT)
.show();
@@ -92,7 +92,7 @@ public class AppLinkActivity extends FragmentActivity
LocalBroadcastManager.getInstance(this).registerReceiver(
directoryStateReceiver,
statusIntentFilter);
- DirectoryInitializationService.startService(this);
+ DirectoryInitialization.start(this);
GameFileCacheService.startLoad(this);
}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java
index 4b07d834fd..17ae613be6 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameAdapter.java
@@ -15,7 +15,7 @@ import org.dolphinemu.dolphinemu.activities.EmulationActivity;
import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag;
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivity;
import org.dolphinemu.dolphinemu.model.GameFile;
-import org.dolphinemu.dolphinemu.services.DirectoryInitializationService;
+import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
import org.dolphinemu.dolphinemu.utils.PicassoUtils;
import org.dolphinemu.dolphinemu.viewholders.GameViewHolder;
@@ -166,7 +166,7 @@ public final class GameAdapter extends RecyclerView.Adapter impl
break;
case 2:
String path =
- DirectoryInitializationService.getUserDirectory() + "/GameSettings/" +
+ DirectoryInitialization.getUserDirectory() + "/GameSettings/" +
gameId + ".ini";
File gameSettingsFile = new File(path);
if (gameSettingsFile.exists())
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java
index 0cbf0a9cfd..2cf23080b1 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/adapters/GameRowPresenter.java
@@ -17,7 +17,7 @@ import org.dolphinemu.dolphinemu.R;
import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag;
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivity;
import org.dolphinemu.dolphinemu.model.GameFile;
-import org.dolphinemu.dolphinemu.services.DirectoryInitializationService;
+import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
import org.dolphinemu.dolphinemu.ui.platform.Platform;
import org.dolphinemu.dolphinemu.utils.PicassoUtils;
import org.dolphinemu.dolphinemu.viewholders.TvGameViewHolder;
@@ -113,7 +113,7 @@ public final class GameRowPresenter extends Presenter
SettingsActivity.launch(activity, MenuTag.GRAPHICS, gameId);
break;
case 2:
- String path = DirectoryInitializationService.getUserDirectory() +
+ String path = DirectoryInitialization.getUserDirectory() +
"/GameSettings/" + gameId + ".ini";
File gameSettingsFile = new File(path);
if (gameSettingsFile.exists())
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java
index 256b38f22a..78b8ef2d1f 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java
@@ -15,7 +15,7 @@ import android.view.MenuItem;
import android.widget.Toast;
import org.dolphinemu.dolphinemu.R;
-import org.dolphinemu.dolphinemu.services.DirectoryInitializationService;
+import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
import org.dolphinemu.dolphinemu.utils.DirectoryStateReceiver;
public final class SettingsActivity extends AppCompatActivity implements SettingsActivityView
@@ -142,7 +142,7 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
LocalBroadcastManager.getInstance(this).registerReceiver(
receiver,
filter);
- DirectoryInitializationService.startService(this);
+ DirectoryInitialization.start(this);
}
@Override
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java
index acf1abd7dd..57bbe9d6cc 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java
@@ -6,8 +6,8 @@ import android.text.TextUtils;
import org.dolphinemu.dolphinemu.R;
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
-import org.dolphinemu.dolphinemu.services.DirectoryInitializationService;
-import org.dolphinemu.dolphinemu.services.DirectoryInitializationService.DirectoryInitializationState;
+import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
+import org.dolphinemu.dolphinemu.utils.DirectoryInitialization.DirectoryInitializationState;
import org.dolphinemu.dolphinemu.utils.DirectoryStateReceiver;
import org.dolphinemu.dolphinemu.utils.Log;
@@ -71,7 +71,7 @@ public final class SettingsActivityPresenter
private void prepareDolphinDirectoriesIfNeeded()
{
- if (DirectoryInitializationService.areDolphinDirectoriesReady())
+ if (DirectoryInitialization.areDolphinDirectoriesReady())
{
loadSettingsUI();
}
@@ -79,7 +79,7 @@ public final class SettingsActivityPresenter
{
mView.showLoading();
IntentFilter statusIntentFilter = new IntentFilter(
- DirectoryInitializationService.BROADCAST_ACTION);
+ DirectoryInitialization.BROADCAST_ACTION);
directoryStateReceiver =
new DirectoryStateReceiver(directoryInitializationState ->
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java
index 278c732556..910c9f0014 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java
@@ -120,15 +120,15 @@ public interface SettingsActivityView
void showExternalStorageNotMountedHint();
/**
- * Start the DirectoryInitializationService and listen for the result.
+ * Start the DirectoryInitialization and listen for the result.
*
- * @param receiver the broadcast receiver for the DirectoryInitializationService
+ * @param receiver the broadcast receiver for the DirectoryInitialization
* @param filter the Intent broadcasts to be received.
*/
void startDirectoryInitializationService(DirectoryStateReceiver receiver, IntentFilter filter);
/**
- * Stop listening to the DirectoryInitializationService.
+ * Stop listening to the DirectoryInitialization.
*
* @param receiver The broadcast receiver to unregister.
*/
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 1aaf8eb4a3..39e380f446 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
@@ -20,7 +20,7 @@ import org.dolphinemu.dolphinemu.features.settings.model.view.SliderSetting;
import org.dolphinemu.dolphinemu.features.settings.model.view.StringSingleChoiceSetting;
import org.dolphinemu.dolphinemu.features.settings.model.view.SubmenuSetting;
import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
-import org.dolphinemu.dolphinemu.services.DirectoryInitializationService;
+import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
import org.dolphinemu.dolphinemu.utils.EGLHelper;
import org.dolphinemu.dolphinemu.utils.Log;
@@ -473,7 +473,7 @@ public final class SettingsFragmentPresenter
try
{
String shadersPath =
- DirectoryInitializationService.getDolphinInternalDirectory() + "/Shaders";
+ DirectoryInitialization.getDolphinInternalDirectory() + "/Shaders";
if (!TextUtils.isEmpty(subDir))
{
shadersPath += "/" + subDir;
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
index e86b68af69..23763ebee1 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/utils/SettingsFile.java
@@ -11,7 +11,7 @@ import org.dolphinemu.dolphinemu.features.settings.model.SettingSection;
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
import org.dolphinemu.dolphinemu.features.settings.model.StringSetting;
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivityView;
-import org.dolphinemu.dolphinemu.services.DirectoryInitializationService;
+import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
import org.dolphinemu.dolphinemu.utils.BiMap;
import org.dolphinemu.dolphinemu.utils.Log;
@@ -462,7 +462,7 @@ public final class SettingsFile
private static File getSettingsFile(String fileName)
{
return new File(
- DirectoryInitializationService.getUserDirectory() + "/Config/" + fileName + ".ini");
+ DirectoryInitialization.getUserDirectory() + "/Config/" + fileName + ".ini");
}
private static File getGenericGameSettingsForAllRegions(String gameId)
@@ -470,21 +470,21 @@ public final class SettingsFile
// Use the first 3 chars from the gameId to load the generic game settings for all regions
gameId = gameId.substring(0, 3);
return new File(
- DirectoryInitializationService.getDolphinInternalDirectory() + "/GameSettings/" +
+ DirectoryInitialization.getDolphinInternalDirectory() + "/GameSettings/" +
gameId + ".ini");
}
private static File getGenericGameSettingsFile(String gameId)
{
return new File(
- DirectoryInitializationService.getDolphinInternalDirectory() + "/GameSettings/" +
+ DirectoryInitialization.getDolphinInternalDirectory() + "/GameSettings/" +
gameId + ".ini");
}
private static File getCustomGameSettingsFile(String gameId)
{
return new File(
- DirectoryInitializationService.getUserDirectory() + "/GameSettings/" + gameId + ".ini");
+ DirectoryInitialization.getUserDirectory() + "/GameSettings/" + gameId + ".ini");
}
private static SettingSection sectionFromLine(String line, boolean isCustomGame)
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 147b2d693e..e4628e2c4a 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
@@ -20,8 +20,8 @@ import org.dolphinemu.dolphinemu.NativeLibrary;
import org.dolphinemu.dolphinemu.R;
import org.dolphinemu.dolphinemu.activities.EmulationActivity;
import org.dolphinemu.dolphinemu.overlay.InputOverlay;
-import org.dolphinemu.dolphinemu.services.DirectoryInitializationService;
-import org.dolphinemu.dolphinemu.services.DirectoryInitializationService.DirectoryInitializationState;
+import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
+import org.dolphinemu.dolphinemu.utils.DirectoryInitialization.DirectoryInitializationState;
import org.dolphinemu.dolphinemu.utils.DirectoryStateReceiver;
import org.dolphinemu.dolphinemu.utils.Log;
import org.dolphinemu.dolphinemu.utils.StartupHandler;
@@ -127,7 +127,7 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C
public void onResume()
{
super.onResume();
- if (DirectoryInitializationService.areDolphinDirectoriesReady())
+ if (DirectoryInitialization.areDolphinDirectoriesReady())
{
mEmulationState.run(activity.isActivityRecreated());
}
@@ -160,7 +160,7 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C
private void setupDolphinDirectoriesThenStartEmulation()
{
IntentFilter statusIntentFilter = new IntentFilter(
- DirectoryInitializationService.BROADCAST_ACTION);
+ DirectoryInitialization.BROADCAST_ACTION);
directoryStateReceiver =
new DirectoryStateReceiver(directoryInitializationState ->
@@ -189,7 +189,7 @@ public final class EmulationFragment extends Fragment implements SurfaceHolder.C
LocalBroadcastManager.getInstance(getActivity()).registerReceiver(
directoryStateReceiver,
statusIntentFilter);
- DirectoryInitializationService.startService(getActivity());
+ DirectoryInitialization.start(getActivity());
}
public void toggleInputOverlayVisibility()
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 ed95cab7d6..f5eee1bc68 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
@@ -19,7 +19,7 @@ import org.dolphinemu.dolphinemu.R;
import org.dolphinemu.dolphinemu.adapters.PlatformPagerAdapter;
import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag;
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivity;
-import org.dolphinemu.dolphinemu.services.DirectoryInitializationService;
+import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
import org.dolphinemu.dolphinemu.services.GameFileCacheService;
import org.dolphinemu.dolphinemu.ui.platform.Platform;
import org.dolphinemu.dolphinemu.ui.platform.PlatformGamesView;
@@ -188,7 +188,7 @@ public final class MainActivity extends AppCompatActivity implements MainView
case PermissionsHandler.REQUEST_CODE_WRITE_PERMISSION:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
- DirectoryInitializationService.startService(this);
+ DirectoryInitialization.start(this);
PlatformPagerAdapter platformPagerAdapter = new PlatformPagerAdapter(
getSupportFragmentManager(), this);
mViewPager.setAdapter(platformPagerAdapter);
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 6f73be35c9..f8b71eaed0 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
@@ -22,7 +22,7 @@ import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag;
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivity;
import org.dolphinemu.dolphinemu.model.GameFile;
import org.dolphinemu.dolphinemu.model.TvSettingsItem;
-import org.dolphinemu.dolphinemu.services.DirectoryInitializationService;
+import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
import org.dolphinemu.dolphinemu.services.GameFileCacheService;
import org.dolphinemu.dolphinemu.ui.platform.Platform;
import org.dolphinemu.dolphinemu.utils.FileBrowserHelper;
@@ -158,7 +158,7 @@ public final class TvMainActivity extends FragmentActivity implements MainView
// Kicks off the program services to update all channels
TvUtil.updateAllChannels(getApplicationContext());
- recreate();
+ buildRowsAdapter();
}
/**
@@ -195,7 +195,7 @@ public final class TvMainActivity extends FragmentActivity implements MainView
case PermissionsHandler.REQUEST_CODE_WRITE_PERMISSION:
if (grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
- DirectoryInitializationService.startService(this);
+ DirectoryInitialization.start(this);
GameFileCacheService.startLoad(this);
}
else
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.java
index e68852233c..6f3e07cbb5 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Analytics.java
@@ -15,7 +15,6 @@ import org.dolphinemu.dolphinemu.DolphinApplication;
import org.dolphinemu.dolphinemu.R;
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
-import org.dolphinemu.dolphinemu.services.DirectoryInitializationService;
public class Analytics
{
@@ -36,16 +35,16 @@ public class Analytics
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
if (!preferences.getBoolean(analyticsAsked, false))
{
- if (!DirectoryInitializationService.areDolphinDirectoriesReady())
+ if (!DirectoryInitialization.areDolphinDirectoriesReady())
{
// Wait for directories to get initialized
IntentFilter statusIntentFilter = new IntentFilter(
- DirectoryInitializationService.BROADCAST_ACTION);
+ DirectoryInitialization.BROADCAST_ACTION);
directoryStateReceiver = new DirectoryStateReceiver(directoryInitializationState ->
{
if (directoryInitializationState ==
- DirectoryInitializationService.DirectoryInitializationState.DOLPHIN_DIRECTORIES_INITIALIZED)
+ DirectoryInitialization.DirectoryInitializationState.DOLPHIN_DIRECTORIES_INITIALIZED)
{
LocalBroadcastManager.getInstance(context).unregisterReceiver(directoryStateReceiver);
directoryStateReceiver = null;
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/DirectoryInitializationService.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
similarity index 70%
rename from Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/DirectoryInitializationService.java
rename to Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
index 74e8a63fa4..b0132c215f 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/services/DirectoryInitializationService.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java
@@ -4,9 +4,8 @@
* Refer to the license.txt file included.
*/
-package org.dolphinemu.dolphinemu.services;
+package org.dolphinemu.dolphinemu.utils;
-import android.app.IntentService;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
@@ -15,8 +14,6 @@ import android.preference.PreferenceManager;
import android.support.v4.content.LocalBroadcastManager;
import org.dolphinemu.dolphinemu.NativeLibrary;
-import org.dolphinemu.dolphinemu.utils.Log;
-import org.dolphinemu.dolphinemu.utils.PermissionsHandler;
import java.io.File;
import java.io.FileOutputStream;
@@ -30,7 +27,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
* A service that spawns its own thread in order to copy several binary and shader files
* from the Dolphin APK to the external file system.
*/
-public final class DirectoryInitializationService extends IntentService
+public final class DirectoryInitialization
{
public static final String BROADCAST_ACTION =
"org.dolphinemu.dolphinemu.DIRECTORY_INITIALIZATION";
@@ -48,31 +45,26 @@ public final class DirectoryInitializationService extends IntentService
CANT_FIND_EXTERNAL_STORAGE
}
- public DirectoryInitializationService()
+ public static void start(Context context)
{
- // Superclass constructor is called to name the thread on which this service executes.
- super("DirectoryInitializationService");
+ // Can take a few seconds to run, so don't block UI thread.
+ //noinspection TrivialFunctionalExpressionUsage
+ ((Runnable) () -> init(context)).run();
}
- public static void startService(Context context)
+ private static void init(Context context)
{
- Intent intent = new Intent(context, DirectoryInitializationService.class);
- context.startService(intent);
- }
-
- @Override
- protected void onHandleIntent(Intent intent)
- {
- isDolphinDirectoryInitializationRunning.set(true);
+ if (!isDolphinDirectoryInitializationRunning.compareAndSet(false, true))
+ return;
if (directoryState != DirectoryInitializationState.DOLPHIN_DIRECTORIES_INITIALIZED)
{
- if (PermissionsHandler.hasWriteAccess(this))
+ if (PermissionsHandler.hasWriteAccess(context))
{
if (setDolphinUserDirectory())
{
- initializeInternalStorage();
- initializeExternalStorage();
+ initializeInternalStorage(context);
+ initializeExternalStorage(context);
directoryState = DirectoryInitializationState.DOLPHIN_DIRECTORIES_INITIALIZED;
}
@@ -88,10 +80,10 @@ public final class DirectoryInitializationService extends IntentService
}
isDolphinDirectoryInitializationRunning.set(false);
- sendBroadcastState(directoryState);
+ sendBroadcastState(directoryState, context);
}
- private boolean setDolphinUserDirectory()
+ private static boolean setDolphinUserDirectory()
{
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState()))
{
@@ -99,7 +91,7 @@ public final class DirectoryInitializationService extends IntentService
if (externalPath != null)
{
userPath = externalPath.getAbsolutePath() + "/dolphin-emu";
- Log.debug("[DirectoryInitializationService] User Dir: " + userPath);
+ Log.debug("[DirectoryInitialization] User Dir: " + userPath);
NativeLibrary.SetUserDirectory(userPath);
return true;
}
@@ -109,19 +101,19 @@ public final class DirectoryInitializationService extends IntentService
return false;
}
- private void initializeInternalStorage()
+ private static void initializeInternalStorage(Context context)
{
- File sysDirectory = new File(getFilesDir(), "Sys");
+ File sysDirectory = new File(context.getFilesDir(), "Sys");
internalPath = sysDirectory.getAbsolutePath();
- SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this);
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
String revision = NativeLibrary.GetGitRevision();
if (!preferences.getString("sysDirectoryVersion", "").equals(revision))
{
// There is no extracted Sys directory, or there is a Sys directory from another
// version of Dolphin that might contain outdated files. Let's (re-)extract Sys.
deleteDirectoryRecursively(sysDirectory);
- copyAssetFolder("Sys", sysDirectory, true);
+ copyAssetFolder("Sys", sysDirectory, true, context);
SharedPreferences.Editor editor = preferences.edit();
editor.putString("sysDirectoryVersion", revision);
@@ -132,7 +124,7 @@ public final class DirectoryInitializationService extends IntentService
SetSysDirectory(sysDirectory.getPath());
}
- private void initializeExternalStorage()
+ private static void initializeExternalStorage(Context context)
{
// Create User directory structure and copy some NAND files from the extracted Sys directory.
CreateUserDirectories();
@@ -147,8 +139,8 @@ public final class DirectoryInitializationService extends IntentService
//
// TODO: Redo the Android controller system so that we don't have to extract these INIs.
String configDirectory = NativeLibrary.GetUserDirectory() + File.separator + "Config";
- copyAsset("GCPadNew.ini", new File(configDirectory, "GCPadNew.ini"), true);
- copyAsset("WiimoteNew.ini", new File(configDirectory, "WiimoteNew.ini"), false);
+ copyAsset("GCPadNew.ini", new File(configDirectory, "GCPadNew.ini"), true, context);
+ copyAsset("WiimoteNew.ini", new File(configDirectory, "WiimoteNew.ini"), false, context);
}
private static void deleteDirectoryRecursively(File file)
@@ -170,12 +162,12 @@ public final class DirectoryInitializationService extends IntentService
{
if (directoryState == null)
{
- throw new IllegalStateException("DirectoryInitializationService has to run at least once!");
+ throw new IllegalStateException("DirectoryInitialization has to run at least once!");
}
else if (isDolphinDirectoryInitializationRunning.get())
{
throw new IllegalStateException(
- "DirectoryInitializationService has to finish running first!");
+ "DirectoryInitialization has to finish running first!");
}
return userPath;
@@ -185,34 +177,34 @@ public final class DirectoryInitializationService extends IntentService
{
if (directoryState == null)
{
- throw new IllegalStateException("DirectoryInitializationService has to run at least once!");
+ throw new IllegalStateException("DirectoryInitialization has to run at least once!");
}
else if (isDolphinDirectoryInitializationRunning.get())
{
throw new IllegalStateException(
- "DirectoryInitializationService has to finish running first!");
+ "DirectoryInitialization has to finish running first!");
}
return internalPath;
}
- private void sendBroadcastState(DirectoryInitializationState state)
+ private static void sendBroadcastState(DirectoryInitializationState state, Context context)
{
Intent localIntent =
new Intent(BROADCAST_ACTION)
.putExtra(EXTRA_STATE, state);
- LocalBroadcastManager.getInstance(this).sendBroadcast(localIntent);
+ LocalBroadcastManager.getInstance(context).sendBroadcast(localIntent);
}
- private void copyAsset(String asset, File output, Boolean overwrite)
+ private static void copyAsset(String asset, File output, Boolean overwrite, Context context)
{
- Log.verbose("[DirectoryInitializationService] Copying File " + asset + " to " + output);
+ Log.verbose("[DirectoryInitialization] Copying File " + asset + " to " + output);
try
{
if (!output.exists() || overwrite)
{
- InputStream in = getAssets().open(asset);
+ InputStream in = context.getAssets().open(asset);
OutputStream out = new FileOutputStream(output);
copyFile(in, out);
in.close();
@@ -221,20 +213,21 @@ public final class DirectoryInitializationService extends IntentService
}
catch (IOException e)
{
- Log.error("[DirectoryInitializationService] Failed to copy asset file: " + asset +
+ Log.error("[DirectoryInitialization] Failed to copy asset file: " + asset +
e.getMessage());
}
}
- private void copyAssetFolder(String assetFolder, File outputFolder, Boolean overwrite)
+ private static void copyAssetFolder(String assetFolder, File outputFolder, Boolean overwrite,
+ Context context)
{
- Log.verbose("[DirectoryInitializationService] Copying Folder " + assetFolder + " to " +
+ Log.verbose("[DirectoryInitialization] Copying Folder " + assetFolder + " to " +
outputFolder);
try
{
boolean createdFolder = false;
- for (String file : getAssets().list(assetFolder))
+ for (String file : context.getAssets().list(assetFolder))
{
if (!createdFolder)
{
@@ -242,18 +235,19 @@ public final class DirectoryInitializationService extends IntentService
createdFolder = true;
}
copyAssetFolder(assetFolder + File.separator + file, new File(outputFolder, file),
- overwrite);
- copyAsset(assetFolder + File.separator + file, new File(outputFolder, file), overwrite);
+ overwrite, context);
+ copyAsset(assetFolder + File.separator + file, new File(outputFolder, file), overwrite,
+ context);
}
}
catch (IOException e)
{
- Log.error("[DirectoryInitializationService] Failed to copy asset folder: " + assetFolder +
+ Log.error("[DirectoryInitialization] Failed to copy asset folder: " + assetFolder +
e.getMessage());
}
}
- private void copyFile(InputStream in, OutputStream out) throws IOException
+ private static void copyFile(InputStream in, OutputStream out) throws IOException
{
byte[] buffer = new byte[1024];
int read;
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryStateReceiver.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryStateReceiver.java
index 2471e50a32..fe51b41c3f 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryStateReceiver.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryStateReceiver.java
@@ -4,8 +4,7 @@ import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
-import org.dolphinemu.dolphinemu.services.DirectoryInitializationService;
-import org.dolphinemu.dolphinemu.services.DirectoryInitializationService.DirectoryInitializationState;
+import org.dolphinemu.dolphinemu.utils.DirectoryInitialization.DirectoryInitializationState;
import rx.functions.Action1;
@@ -22,7 +21,7 @@ public class DirectoryStateReceiver extends BroadcastReceiver
public void onReceive(Context context, Intent intent)
{
DirectoryInitializationState state = (DirectoryInitializationState) intent
- .getSerializableExtra(DirectoryInitializationService.EXTRA_STATE);
+ .getSerializableExtra(DirectoryInitialization.EXTRA_STATE);
callback.call(state);
}
}
diff --git a/Source/Android/jni/MainAndroid.cpp b/Source/Android/jni/MainAndroid.cpp
index a160786063..089d0b776d 100644
--- a/Source/Android/jni/MainAndroid.cpp
+++ b/Source/Android/jni/MainAndroid.cpp
@@ -246,8 +246,8 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_LoadStateAs(
jobject obj,
jstring path);
JNIEXPORT void JNICALL
-Java_org_dolphinemu_dolphinemu_services_DirectoryInitializationService_CreateUserDirectories(
- JNIEnv* env, jobject obj);
+Java_org_dolphinemu_dolphinemu_utils_DirectoryInitialization_CreateUserDirectories(JNIEnv* env,
+ jobject obj);
JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_SetUserDirectory(
JNIEnv* env, jobject obj, jstring jDirectory);
JNIEXPORT jstring JNICALL
@@ -457,8 +457,7 @@ JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_NativeLibrary_LoadStateAs(
State::LoadAs(GetJString(env, path));
}
-JNIEXPORT void JNICALL
-Java_org_dolphinemu_dolphinemu_services_DirectoryInitializationService_SetSysDirectory(
+JNIEXPORT void JNICALL Java_org_dolphinemu_dolphinemu_utils_DirectoryInitialization_SetSysDirectory(
JNIEnv* env, jobject obj, jstring jPath)
{
const std::string path = GetJString(env, jPath);
@@ -466,8 +465,8 @@ Java_org_dolphinemu_dolphinemu_services_DirectoryInitializationService_SetSysDir
}
JNIEXPORT void JNICALL
-Java_org_dolphinemu_dolphinemu_services_DirectoryInitializationService_CreateUserDirectories(
- JNIEnv* env, jobject obj)
+Java_org_dolphinemu_dolphinemu_utils_DirectoryInitialization_CreateUserDirectories(JNIEnv* env,
+ jobject obj)
{
UICommon::CreateDirectories();
}