From 1bb22d2e90eb43146b4e577055064260b4649c2d Mon Sep 17 00:00:00 2001 From: Miku AuahDark Date: Fri, 5 Nov 2021 15:22:03 +0800 Subject: [PATCH] Set game source path when using virtual archive in Android. This will also prevent double `love.filesystem.setSource()` call in that case. --- src/modules/filesystem/physfs/Filesystem.cpp | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/modules/filesystem/physfs/Filesystem.cpp b/src/modules/filesystem/physfs/Filesystem.cpp index 62504780e..12ce395dd 100644 --- a/src/modules/filesystem/physfs/Filesystem.cpp +++ b/src/modules/filesystem/physfs/Filesystem.cpp @@ -232,15 +232,13 @@ bool Filesystem::setSource(const char *source) PHYSFS_Io *gameLoveIO; bool hasFusedGame = love::android::checkFusedGame((void **) &gameLoveIO); + bool isAAssetMounted = false; if (hasFusedGame) { if (gameLoveIO) - { // Actually we should just be able to mount gameLoveIO, but that's experimental. gameLoveIO->destroy(gameLoveIO); - goto oldschool; - } else { if (!love::android::initializeVirtualArchive()) @@ -248,11 +246,15 @@ bool Filesystem::setSource(const char *source) SDL_Log("Unable to mount AAsset: %s", PHYSFS_getErrorByCode(PHYSFS_getLastErrorCode())); return false; } + + // See love::android::initializeVirtualArchive() + new_search_path = "ASET.AASSET"; + isAAssetMounted = true; } } - else + + if (!isAAssetMounted) { - oldschool: new_search_path = love::android::getSelectedGameFile(); // try mounting first, if that fails, load to memory and mount