diff --git a/Common/File/Path.cpp b/Common/File/Path.cpp index 96110fc2d3..5f0e905dda 100644 --- a/Common/File/Path.cpp +++ b/Common/File/Path.cpp @@ -279,7 +279,6 @@ Path Path::GetRootVolume() const { return Path(path); } #endif - return Path("/"); } diff --git a/Core/FileLoaders/LocalFileLoader.cpp b/Core/FileLoaders/LocalFileLoader.cpp index 96d3412cf6..2e2caeff74 100644 --- a/Core/FileLoaders/LocalFileLoader.cpp +++ b/Core/FileLoaders/LocalFileLoader.cpp @@ -60,7 +60,7 @@ LocalFileLoader::LocalFileLoader(const Path &filename) #if PPSSPP_PLATFORM(ANDROID) if (filename.Type() == PathType::CONTENT_URI) { int fd = Android_OpenContentUriFd(filename.ToString(), Android_OpenContentUriMode::READ); - INFO_LOG(SYSTEM, "Fd %d for content URI: '%s'", fd, filename.c_str()); + VERBOSE_LOG(SYSTEM, "Fd %d for content URI: '%s'", fd, filename.c_str()); if (fd < 0) { ERROR_LOG(FILESYS, "LoadFileLoader failed to open content URI: '%s'", filename.c_str()); return; diff --git a/Core/FileSystems/DirectoryFileSystem.cpp b/Core/FileSystems/DirectoryFileSystem.cpp index 4a7bde8f8b..4e2ab9b2d8 100644 --- a/Core/FileSystems/DirectoryFileSystem.cpp +++ b/Core/FileSystems/DirectoryFileSystem.cpp @@ -187,7 +187,7 @@ Path DirectoryFileHandle::GetLocalPath(const Path &basePath, std::string localpa localpath.erase(0, 1); if (fileSystemFlags_ & FileSystemFlags::STRIP_PSP) { - if (startsWith(localpath, "/PSP")) { + if (startsWith(localpath, "PSP/")) { localpath = localpath.substr(4); } } @@ -203,7 +203,7 @@ Path DirectoryFileSystem::GetLocalPath(std::string internalPath) const { internalPath.erase(0, 1); if (flags & FileSystemFlags::STRIP_PSP) { - if (startsWith(internalPath, "/PSP")) { + if (startsWith(internalPath, "PSP/")) { internalPath = internalPath.substr(4); } } @@ -638,6 +638,7 @@ bool DirectoryFileSystem::RemoveFile(const std::string &filename) { int DirectoryFileSystem::OpenFile(std::string filename, FileAccess access, const char *devicename) { OpenFileEntry entry; + entry.hFile.fileSystemFlags_ = flags; u32 err = 0; bool success = entry.hFile.Open(basePath, filename, access, err); if (err == 0 && !success) { @@ -964,6 +965,7 @@ void DirectoryFileSystem::DoState(PointerWrap &p) { CloseAll(); u32 key; OpenFileEntry entry; + entry.hFile.fileSystemFlags_ = flags; for (u32 i = 0; i < num; i++) { Do(p, key); Do(p, entry.guestFilename); diff --git a/Core/System.cpp b/Core/System.cpp index d2427d43fd..d11fb469fe 100644 --- a/Core/System.cpp +++ b/Core/System.cpp @@ -708,8 +708,8 @@ void InitSysDirectories() { // Create the default directories that a real PSP creates. Good for homebrew so they can // expect a standard environment. Skipping THEME though, that's pointless. - File::CreateDir(g_Config.memStickDirectory / "PSP"); - File::CreateDir(g_Config.memStickDirectory / "PSP/COMMON"); + File::CreateDir(GetSysDirectory(DIRECTORY_PSP)); + File::CreateDir(GetSysDirectory(DIRECTORY_PSP) / "COMMON"); File::CreateDir(GetSysDirectory(DIRECTORY_GAME)); File::CreateDir(GetSysDirectory(DIRECTORY_SAVEDATA)); File::CreateDir(GetSysDirectory(DIRECTORY_SAVESTATE)); diff --git a/UI/MainScreen.cpp b/UI/MainScreen.cpp index 8596294209..6f7872289a 100644 --- a/UI/MainScreen.cpp +++ b/UI/MainScreen.cpp @@ -540,10 +540,15 @@ UI::EventReturn GameBrowser::StorageClick(UI::EventParams &e) { return UI::EVENT_DONE; } -UI::EventReturn GameBrowser::HomeClick(UI::EventParams &e) { - if (System_GetPropertyBool(SYSPROP_ANDROID_SCOPED_STORAGE)) { - if (path_.GetPath().Type() == PathType::CONTENT_URI) { - path_.SetPath(path_.GetPath().GetRootVolume()); +UI::EventReturn GameBrowser::OnHomeClick(UI::EventParams &e) { + if (path_.GetPath().Type() == PathType::CONTENT_URI) { + Path rootPath = path_.GetPath().GetRootVolume(); + if (rootPath != path_.GetPath()) { + SetPath(rootPath); + return UI::EVENT_DONE; + } + if (System_GetPropertyBool(SYSPROP_ANDROID_SCOPED_STORAGE)) { + // There'll be no sensible home, ignore. return UI::EVENT_DONE; } } @@ -669,7 +674,7 @@ void GameBrowser::Refresh() { if (browseFlags_ & BrowseFlags::NAVIGATE) { topBar->Add(new Spacer(2.0f)); topBar->Add(new TextView(path_.GetFriendlyPath().c_str(), ALIGN_VCENTER | FLAG_WRAP_TEXT, true, new LinearLayoutParams(FILL_PARENT, 64.0f, 1.0f))); - topBar->Add(new Choice(ImageID("I_HOME"), new LayoutParams(WRAP_CONTENT, 64.0f)))->OnClick.Handle(this, &GameBrowser::HomeClick); + topBar->Add(new Choice(ImageID("I_HOME"), new LayoutParams(WRAP_CONTENT, 64.0f)))->OnClick.Handle(this, &GameBrowser::OnHomeClick); if (System_GetPropertyBool(SYSPROP_HAS_ADDITIONAL_STORAGE)) { topBar->Add(new Choice(ImageID("I_SDCARD"), new LayoutParams(WRAP_CONTENT, 64.0f)))->OnClick.Handle(this, &GameBrowser::StorageClick); } diff --git a/UI/MainScreen.h b/UI/MainScreen.h index 9a19321755..6b15f06427 100644 --- a/UI/MainScreen.h +++ b/UI/MainScreen.h @@ -74,7 +74,7 @@ private: UI::EventReturn LastClick(UI::EventParams &e); UI::EventReturn BrowseClick(UI::EventParams &e); UI::EventReturn StorageClick(UI::EventParams &e); - UI::EventReturn HomeClick(UI::EventParams &e); + UI::EventReturn OnHomeClick(UI::EventParams &e); UI::EventReturn PinToggleClick(UI::EventParams &e); UI::EventReturn GridSettingsClick(UI::EventParams &e); UI::EventReturn OnRecentClear(UI::EventParams &e);