From 415f84e13f11ac77d50a7f05fa10198d78be4b7c Mon Sep 17 00:00:00 2001 From: radius Date: Fri, 25 Nov 2016 13:46:48 -0500 Subject: [PATCH 1/2] having it as preferExternal accomplishes literally nothing! Basically it saves the apk file (that is used ONCE) in the external SD but all the data files are created in the same location in the internal partition Having it as preferExternal causes installation issues on some devices (have to remove the SD card to install the app..., then insert again) --- pkg/android/phoenix/AndroidManifest.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/android/phoenix/AndroidManifest.xml b/pkg/android/phoenix/AndroidManifest.xml index da36cb326a..36edccbb32 100644 --- a/pkg/android/phoenix/AndroidManifest.xml +++ b/pkg/android/phoenix/AndroidManifest.xml @@ -2,7 +2,7 @@ package="com.retroarch" android:versionCode="48" android:versionName="1.3.6" - android:installLocation="preferExternal"> + android:installLocation="internalOnly"> From e43a9a0adda551ccdcfafb2fcf2de9bb2bc64fd9 Mon Sep 17 00:00:00 2001 From: radius Date: Fri, 25 Nov 2016 14:05:17 -0500 Subject: [PATCH 2/2] android frontend driver cleanup --- frontend/drivers/platform_linux.c | 101 ++++++++++++------------------ 1 file changed, 39 insertions(+), 62 deletions(-) diff --git a/frontend/drivers/platform_linux.c b/frontend/drivers/platform_linux.c index 10ca20bf70..12ccf2c753 100644 --- a/frontend/drivers/platform_linux.c +++ b/frontend/drivers/platform_linux.c @@ -1494,7 +1494,7 @@ static void frontend_linux_get_env(int *argc, app_dir, "database/cursors", sizeof(g_defaults.dir.cursor)); fill_pathname_join(g_defaults.dir.wallpapers, app_dir, "assets/wallpapers", sizeof(g_defaults.dir.wallpapers)); - if(*downloads_dir && test_permissions(downloads_dir)) + if(!string_is_empty(downloads_dir) && test_permissions(downloads_dir)) { fill_pathname_join(g_defaults.dir.core_assets, downloads_dir, "", sizeof(g_defaults.dir.core_assets)); @@ -1510,24 +1510,10 @@ static void frontend_linux_get_env(int *argc, "RetroArch", "[ENV]: default download folder: [%s]", g_defaults.dir.core_assets); - if(*screenshot_dir && test_permissions(screenshot_dir)) - { - fill_pathname_join(g_defaults.dir.screenshot, - screenshot_dir, "", sizeof(g_defaults.dir.screenshot)); - } - else - { - fill_pathname_join(g_defaults.dir.screenshot, - app_dir, "screenshots", sizeof(g_defaults.dir.screenshot)); - path_mkdir(g_defaults.dir.screenshot); - } - - __android_log_print(ANDROID_LOG_INFO, - "RetroArch", "[ENV]: default screenshot folder: [%s]", - g_defaults.dir.screenshot); - switch (perms) { + /* Set defaults for this since we can't guarantee saving on content dir will + work in this case */ case INTERNAL_STORAGE_APPDIR_WRITABLE: fill_pathname_join(g_defaults.dir.sram, internal_storage_app_path, "saves", sizeof(g_defaults.dir.sram)); @@ -1547,19 +1533,25 @@ static void frontend_linux_get_env(int *argc, fill_pathname_join(g_defaults.dir.cheats, internal_storage_app_path, "cheats", sizeof(g_defaults.dir.cheats)); - /* TODO/FIXME - Test if this is needed at all, as far as I know, - * every directory we set in g_defaults already gets created if it - * doesn't exist already */ + if(!string_is_empty(screenshot_dir &&) test_permissions(screenshot_dir)) + { + fill_pathname_join(g_defaults.dir.screenshot, + screenshot_dir, "", sizeof(g_defaults.dir.screenshot)); + } + else + { + fill_pathname_join(g_defaults.dir.screenshot, + internal_storage_app_path, "screenshots", sizeof(g_defaults.dir.screenshot)); + path_mkdir(g_defaults.dir.screenshot); + } + path_mkdir(g_defaults.dir.sram); path_mkdir(g_defaults.dir.savestate); path_mkdir(g_defaults.dir.system); - path_mkdir(g_defaults.dir.menu_config); - path_mkdir(g_defaults.dir.remap); - path_mkdir(g_defaults.dir.thumbnails); - path_mkdir(g_defaults.dir.playlist); - path_mkdir(g_defaults.dir.cheats); break; case INTERNAL_STORAGE_NOT_WRITABLE: + /* Set defaults for this since we can't guarantee saving on content dir will + work in this case */ fill_pathname_join(g_defaults.dir.sram, app_dir, "saves", sizeof(g_defaults.dir.sram)); fill_pathname_join(g_defaults.dir.savestate, @@ -1578,19 +1570,25 @@ static void frontend_linux_get_env(int *argc, fill_pathname_join(g_defaults.dir.cheats, app_dir, "cheats", sizeof(g_defaults.dir.cheats)); - /* TODO/FIXME - Test if this is needed at all, as far as I know, - * every directory we set in g_defaults already gets created if it - * doesn't exist already */ + if(!string_is_empty(screenshot_dir &&) test_permissions(screenshot_dir)) + { + fill_pathname_join(g_defaults.dir.screenshot, + screenshot_dir, "", sizeof(g_defaults.dir.screenshot)); + } + else + { + fill_pathname_join(g_defaults.dir.screenshot, + app_dir, "screenshots", sizeof(g_defaults.dir.screenshot)); + path_mkdir(g_defaults.dir.screenshot); + } + path_mkdir(g_defaults.dir.sram); path_mkdir(g_defaults.dir.savestate); path_mkdir(g_defaults.dir.system); - path_mkdir(g_defaults.dir.menu_config); - path_mkdir(g_defaults.dir.remap); - path_mkdir(g_defaults.dir.thumbnails); - path_mkdir(g_defaults.dir.playlist); - path_mkdir(g_defaults.dir.cheats); break; case INTERNAL_STORAGE_WRITABLE: + /* Don't set defaults for saves, states, system or screenshots + in this case to be able to honour saving on content dir */ fill_pathname_join(g_defaults.dir.menu_config, internal_storage_path, "RetroArch/config", sizeof(g_defaults.dir.menu_config)); fill_pathname_join(g_defaults.dir.remap, @@ -1601,38 +1599,14 @@ static void frontend_linux_get_env(int *argc, internal_storage_path, "RetroArch/playlists", sizeof(g_defaults.dir.playlist)); fill_pathname_join(g_defaults.dir.cheats, internal_storage_path, "RetroArch/cheats", sizeof(g_defaults.dir.cheats)); - - /* TODO/FIXME - Test if this is needed at all, as far as I know, - * every directory we set in g_defaults already gets created if it - * doesn't exist already */ - path_mkdir(g_defaults.dir.menu_config); - path_mkdir(g_defaults.dir.remap); - path_mkdir(g_defaults.dir.thumbnails); - path_mkdir(g_defaults.dir.playlist); - path_mkdir(g_defaults.dir.cheats); default: break; } - - /* create save and system directories in the internal dir too */ - fill_pathname_join(buf, app_dir, "saves", sizeof(buf)); - path_mkdir(buf); - - fill_pathname_join(buf, app_dir, "states", sizeof(buf)); - path_mkdir(buf); - - fill_pathname_join(buf, app_dir, "system", sizeof(buf)); - path_mkdir(buf); - - /* create save and system directories in the internal sd too */ - fill_pathname_join(buf, internal_storage_app_path, "saves", sizeof(buf)); - path_mkdir(buf); - - fill_pathname_join(buf, internal_storage_app_path, "states", sizeof(buf)); - path_mkdir(buf); - - fill_pathname_join(buf, internal_storage_app_path, "system", sizeof(buf)); - path_mkdir(buf); + path_mkdir(g_defaults.dir.menu_config); + path_mkdir(g_defaults.dir.remap); + path_mkdir(g_defaults.dir.thumbnails); + path_mkdir(g_defaults.dir.playlist); + path_mkdir(g_defaults.dir.cheats); __android_log_print(ANDROID_LOG_INFO, "RetroArch", "[ENV]: default savefile folder: [%s]", @@ -1643,6 +1617,9 @@ static void frontend_linux_get_env(int *argc, __android_log_print(ANDROID_LOG_INFO, "RetroArch", "[ENV]: default system folder: [%s]", g_defaults.dir.system); + __android_log_print(ANDROID_LOG_INFO, + "RetroArch", "[ENV]: default screenshot folder: [%s]", + g_defaults.dir.screenshot); } } }