From 42f5bcb263cf1fd7c59f2c3b710aeee6741f4d40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Rydg=C3=A5rd?= Date: Wed, 11 Dec 2013 15:11:27 +0100 Subject: [PATCH] Add ZIP icon in games browser. This one's from Gnome, license should be OK. --- Core/HLE/sceIo.cpp | 2 +- UI/GameInfoCache.cpp | 45 +++++++++++++++++++++++++++---------------- UI/GameInfoCache.h | 2 -- assets/zip.png | Bin 0 -> 10577 bytes 4 files changed, 29 insertions(+), 20 deletions(-) create mode 100644 assets/zip.png diff --git a/Core/HLE/sceIo.cpp b/Core/HLE/sceIo.cpp index 6cf9209b43..675a3204f6 100644 --- a/Core/HLE/sceIo.cpp +++ b/Core/HLE/sceIo.cpp @@ -360,7 +360,7 @@ void __IoSyncNotify(u64 userdata, int cyclesLate) { if (ioManager.WaitResult(f->handle, managerResult)) { result = managerResult; } else { - ERROR_LOG(SCEIO, "Unable to complete IO operation."); + ERROR_LOG(SCEIO, "Unable to complete IO operation on %s", f->GetName()); } HLEKernel::ResumeFromWait(threadID, WAITTYPE_IO, fd, result); diff --git a/UI/GameInfoCache.cpp b/UI/GameInfoCache.cpp index 6bdb2f9603..de1cd9fe6d 100644 --- a/UI/GameInfoCache.cpp +++ b/UI/GameInfoCache.cpp @@ -65,6 +65,12 @@ bool GameInfo::DeleteGame() { g_Config.CleanRecent(); return true; } + case FILETYPE_PSP_ELF: + { + const char *fileToRemove = fileInfo.fullName.c_str(); + deleteFile(fileToRemove); + return true; + } default: return false; @@ -273,9 +279,7 @@ public: lock_guard lock(info_->lock); if (pbp.GetSubFileSize(PBP_ICON0_PNG) > 0) { pbp.GetSubFileAsString(PBP_ICON0_PNG, &info_->iconTextureData); - printf("a %s\n", info_->path.c_str()); } else { - printf("b %s\n", info_->path.c_str()); // Read standard icon size_t sz; DEBUG_LOG(LOADER, "Loading unknown.png because a PBP was missing an icon"); @@ -370,18 +374,30 @@ handleELF: break; } - case FILETYPE_NORMAL_DIRECTORY: - info_->title = gamePath_; + case FILETYPE_ARCHIVE_ZIP: + info_->title = getFilename(filename); + info_->paramSFOLoaded = true; + info_->wantBG = false; + { + // Read standard icon + size_t sz; + uint8_t *contents = VFSReadFile("zip.png", &sz); + if (contents) { + lock_guard lock(info_->lock); + info_->iconTextureData = std::string((const char *)contents, sz); + } + delete [] contents; + } break; + case FILETYPE_ARCHIVE_RAR: + // TODO: Set archive icon + case FILETYPE_NORMAL_DIRECTORY: default: - { - std::string fn, ext; - SplitPath(gamePath_, 0, &fn, &ext); - // ext includes the dot - info_->title = fn + ext; - } - break; + info_->title = getFilename(gamePath_); + info_->paramSFOLoaded = true; + info_->wantBG = false; + break; } // probably only want these when we ask for the background image... // should maybe flip the flag to "onlyIcon" @@ -481,10 +497,6 @@ void GameInfoCache::FlushBGs() { } } -void GameInfoCache::Add(const std::string &key, GameInfo *info_) { - -} - // This may run off-main-thread and we thus can't use the global // pspFileSystem (well, we could with synchronization but there might not // even be a game running). @@ -500,9 +512,8 @@ GameInfo *GameInfoCache::GetInfo(const std::string &gamePath, bool wantBG, bool { lock_guard lock(info->lock); if (info->iconTextureData.size()) { - info->iconTexture = new Texture(); - // TODO: We could actually do the PNG decoding as well on the async thread. // We'd have to split up Texture->LoadPNG though, creating some intermediate Image class maybe. + info->iconTexture = new Texture(); if (info->iconTexture->LoadPNG((const u8 *)info->iconTextureData.data(), info->iconTextureData.size(), false)) { info->timeIconWasLoaded = time_now_d(); } else { diff --git a/UI/GameInfoCache.h b/UI/GameInfoCache.h index a1f9f7d4b5..75d8d1b4d4 100644 --- a/UI/GameInfoCache.h +++ b/UI/GameInfoCache.h @@ -123,8 +123,6 @@ public: void Save(); void Load(); - void Add(const std::string &key, GameInfo *info_); - private: // Maps ISO path to info. std::map info_; diff --git a/assets/zip.png b/assets/zip.png new file mode 100644 index 0000000000000000000000000000000000000000..beb6822e5f06ab5ff20928101254f9f4f9248405 GIT binary patch literal 10577 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