Android: Fix error when trying to open .love file through "Load .love File".

This commit is contained in:
Miku AuahDark
2024-10-13 13:54:37 +08:00
parent 910af324dd
commit 72d865eedc
2 changed files with 16 additions and 11 deletions
+2 -2
View File
@@ -284,14 +284,14 @@ bool Filesystem::setSource(const char *source)
if (!isAAssetMounted) if (!isAAssetMounted)
{ {
// Is this love2d://fd/ URIs? // Is this love2d://fd/ URIs?
int fd = love::android::getFDFromLoveProtocol(new_search_path.c_str()); int fd = love::android::getFDFromLoveProtocol(source);
if (fd != -1) if (fd != -1)
{ {
PHYSFS_Io *io = (PHYSFS_Io *) love::android::getIOFromFD(fd); PHYSFS_Io *io = (PHYSFS_Io *) love::android::getIOFromFD(fd);
if (PHYSFS_mountIo(io, "LOVE.FD", nullptr, 0)) if (PHYSFS_mountIo(io, "LOVE.FD", nullptr, 0))
{ {
gameSource = new_search_path; gameSource = source;
return true; return true;
} }
+14 -9
View File
@@ -87,18 +87,23 @@ function love.boot()
local identity = "" local identity = ""
if not can_has_game and o.game.set and o.game.arg[1] then if not can_has_game and o.game.set and o.game.arg[1] then
local nouri = o.game.arg[1] local nouri = o.game.arg[1]
local full_source = nouri
if nouri:sub(1, 7) == "file://" then -- Ignore "love2d://" uri as it's used to open a file-descriptor
nouri = uridecode(nouri:sub(8)) -- directly for Android.
end if nouri:sub(1, 9) ~= "love2d://" then
if nouri:sub(1, 7) == "file://" then
nouri = uridecode(nouri:sub(8))
end
local full_source = love.path.getFull(nouri) full_source = love.path.getFull(nouri)
local source_leaf = love.path.leaf(full_source) local source_leaf = love.path.leaf(full_source)
if source_leaf:match("%.lua$") then if source_leaf:match("%.lua$") then
main_file = source_leaf main_file = source_leaf
custom_main_file = true custom_main_file = true
full_source = love.path.getFull(full_source:sub(1, -(#source_leaf + 1))) full_source = love.path.getFull(full_source:sub(1, -(#source_leaf + 1)))
end
end end
can_has_game = pcall(love.filesystem.setSource, full_source) can_has_game = pcall(love.filesystem.setSource, full_source)