Savedata: Skip and defer texture exist check.

We can skip if there's no UI.
This commit is contained in:
Unknown W. Brackets 2022-10-09 10:36:19 -07:00
parent 8c1acc30e4
commit 5bed35b293
5 changed files with 78 additions and 24 deletions

View file

@ -56,6 +56,29 @@ const static int SAVEDATA_DIALOG_SIZE_V1 = 1480;
const static int SAVEDATA_DIALOG_SIZE_V2 = 1500;
const static int SAVEDATA_DIALOG_SIZE_V3 = 1536;
static bool IsNotVisibleAction(SceUtilitySavedataType type) {
switch (type) {
case SCE_UTILITY_SAVEDATA_TYPE_AUTOLOAD:
case SCE_UTILITY_SAVEDATA_TYPE_AUTOSAVE:
case SCE_UTILITY_SAVEDATA_TYPE_SIZES:
case SCE_UTILITY_SAVEDATA_TYPE_LIST:
case SCE_UTILITY_SAVEDATA_TYPE_FILES:
case SCE_UTILITY_SAVEDATA_TYPE_GETSIZE:
case SCE_UTILITY_SAVEDATA_TYPE_MAKEDATASECURE:
case SCE_UTILITY_SAVEDATA_TYPE_MAKEDATA:
case SCE_UTILITY_SAVEDATA_TYPE_WRITEDATASECURE:
case SCE_UTILITY_SAVEDATA_TYPE_WRITEDATA:
case SCE_UTILITY_SAVEDATA_TYPE_READDATASECURE:
case SCE_UTILITY_SAVEDATA_TYPE_READDATA:
case SCE_UTILITY_SAVEDATA_TYPE_DELETEDATA:
case SCE_UTILITY_SAVEDATA_TYPE_AUTODELETE:
return true;
default:
break;
}
return false;
}
PSPSaveDialog::PSPSaveDialog(UtilityDialogType type) : PSPDialog(type) {
param.SetPspParam(0);
@ -87,6 +110,7 @@ int PSPSaveDialog::Init(int paramAddr)
Memory::Memcpy(&request, requestAddr, size);
Memory::Memcpy(&originalRequest, requestAddr, size);
param.SetIgnoreTextures(IsNotVisibleAction((SceUtilitySavedataType)(u32)request.mode));
int retval = param.SetPspParam(&request);
const u32 mode = (u32)param.GetPspParam()->mode;
@ -345,7 +369,7 @@ void PSPSaveDialog::DisplaySaveList(bool canMove) {
PPGeImageStyle imageStyle = FadedImageStyle();
auto fileInfo = param.GetFileInfo(displayCount);
if (fileInfo.size == 0 && fileInfo.texture != NULL)
if (fileInfo.size == 0 && fileInfo.texture && fileInfo.texture->IsValid())
imageStyle.color = CalcFadedColor(0xFF777777);
// Calc save image position on screen
@ -370,7 +394,7 @@ void PSPSaveDialog::DisplaySaveList(bool canMove) {
continue;
int pad = 0;
if (fileInfo.texture != nullptr) {
if (fileInfo.texture != nullptr && fileInfo.texture->IsValid()) {
fileInfo.texture->SetTexture();
int tw = fileInfo.texture->Width();
int th = fileInfo.texture->Height();
@ -420,7 +444,7 @@ void PSPSaveDialog::DisplaySaveIcon(bool checkExists)
int tw = 256;
int th = 256;
if (curSave.texture != NULL) {
if (curSave.texture != nullptr && curSave.texture->IsValid()) {
curSave.texture->SetTexture();
tw = curSave.texture->Width();
th = curSave.texture->Height();