mirror of
https://github.com/hrydgard/ppsspp.git
synced 2024-10-07 19:03:29 +00:00
GameScreen: Minor logic cleanup, remove Calculate CRC button when not needed.
This commit is contained in:
parent
467a63813a
commit
a74e1a422d
@ -35,16 +35,16 @@ class FakeJit : public FakeGen::FakeXCodeBlock, public JitInterface, public MIPS
|
||||
public:
|
||||
FakeJit(MIPSState *mipsState);
|
||||
|
||||
void DoState(PointerWrap &p);
|
||||
void DoState(PointerWrap &p) override;
|
||||
static void DoDummyState(PointerWrap &p);
|
||||
|
||||
const JitOptions &GetJitOptions() { return jo; }
|
||||
|
||||
void Comp_Generic(MIPSOpcode op);
|
||||
void Comp_Generic(MIPSOpcode op) override;
|
||||
|
||||
void RunLoopUntil(u64 globalticks);
|
||||
void RunLoopUntil(u64 globalticks) override;
|
||||
|
||||
void Compile(u32 em_address); // Compiles a block at current MIPS PC
|
||||
void Compile(u32 em_address) override; // Compiles a block at current MIPS PC
|
||||
const u8 *DoJit(u32 em_address, JitBlock *b);
|
||||
|
||||
const u8 *GetCrashHandler() const override { return nullptr; }
|
||||
@ -55,80 +55,80 @@ public:
|
||||
void EatInstruction(MIPSOpcode op);
|
||||
void AddContinuedBlock(u32 dest);
|
||||
|
||||
void Comp_RunBlock(MIPSOpcode op);
|
||||
void Comp_ReplacementFunc(MIPSOpcode op);
|
||||
void Comp_RunBlock(MIPSOpcode op) override;
|
||||
void Comp_ReplacementFunc(MIPSOpcode op) override;
|
||||
|
||||
// Ops
|
||||
void Comp_ITypeMem(MIPSOpcode op) {}
|
||||
void Comp_Cache(MIPSOpcode op) {}
|
||||
void Comp_ITypeMem(MIPSOpcode op) override {}
|
||||
void Comp_Cache(MIPSOpcode op) override {}
|
||||
|
||||
void Comp_RelBranch(MIPSOpcode op) {}
|
||||
void Comp_RelBranchRI(MIPSOpcode op) {}
|
||||
void Comp_FPUBranch(MIPSOpcode op) {}
|
||||
void Comp_FPULS(MIPSOpcode op) {}
|
||||
void Comp_FPUComp(MIPSOpcode op) {}
|
||||
void Comp_Jump(MIPSOpcode op) {}
|
||||
void Comp_JumpReg(MIPSOpcode op) {}
|
||||
void Comp_Syscall(MIPSOpcode op) {}
|
||||
void Comp_Break(MIPSOpcode op) {}
|
||||
void Comp_RelBranch(MIPSOpcode op) override {}
|
||||
void Comp_RelBranchRI(MIPSOpcode op) override {}
|
||||
void Comp_FPUBranch(MIPSOpcode op) override {}
|
||||
void Comp_FPULS(MIPSOpcode op) override {}
|
||||
void Comp_FPUComp(MIPSOpcode op) override {}
|
||||
void Comp_Jump(MIPSOpcode op) override {}
|
||||
void Comp_JumpReg(MIPSOpcode op) override {}
|
||||
void Comp_Syscall(MIPSOpcode op) override {}
|
||||
void Comp_Break(MIPSOpcode op) override {}
|
||||
|
||||
void Comp_IType(MIPSOpcode op) {}
|
||||
void Comp_RType2(MIPSOpcode op) {}
|
||||
void Comp_RType3(MIPSOpcode op) {}
|
||||
void Comp_ShiftType(MIPSOpcode op) {}
|
||||
void Comp_Allegrex(MIPSOpcode op) {}
|
||||
void Comp_Allegrex2(MIPSOpcode op) {}
|
||||
void Comp_VBranch(MIPSOpcode op) {}
|
||||
void Comp_MulDivType(MIPSOpcode op) {}
|
||||
void Comp_Special3(MIPSOpcode op) {}
|
||||
void Comp_IType(MIPSOpcode op) override {}
|
||||
void Comp_RType2(MIPSOpcode op) override {}
|
||||
void Comp_RType3(MIPSOpcode op) override {}
|
||||
void Comp_ShiftType(MIPSOpcode op) override {}
|
||||
void Comp_Allegrex(MIPSOpcode op) override {}
|
||||
void Comp_Allegrex2(MIPSOpcode op) override {}
|
||||
void Comp_VBranch(MIPSOpcode op) override {}
|
||||
void Comp_MulDivType(MIPSOpcode op) override {}
|
||||
void Comp_Special3(MIPSOpcode op) override {}
|
||||
|
||||
void Comp_FPU3op(MIPSOpcode op) {}
|
||||
void Comp_FPU2op(MIPSOpcode op) {}
|
||||
void Comp_mxc1(MIPSOpcode op) {}
|
||||
void Comp_FPU3op(MIPSOpcode op) override {}
|
||||
void Comp_FPU2op(MIPSOpcode op) override {}
|
||||
void Comp_mxc1(MIPSOpcode op) override {}
|
||||
|
||||
void Comp_DoNothing(MIPSOpcode op) {}
|
||||
void Comp_DoNothing(MIPSOpcode op) override {}
|
||||
|
||||
void Comp_SV(MIPSOpcode op) {}
|
||||
void Comp_SVQ(MIPSOpcode op) {}
|
||||
void Comp_VPFX(MIPSOpcode op) {}
|
||||
void Comp_VVectorInit(MIPSOpcode op) {}
|
||||
void Comp_VMatrixInit(MIPSOpcode op) {}
|
||||
void Comp_VDot(MIPSOpcode op) {}
|
||||
void Comp_VecDo3(MIPSOpcode op) {}
|
||||
void Comp_VV2Op(MIPSOpcode op) {}
|
||||
void Comp_Mftv(MIPSOpcode op) {}
|
||||
void Comp_Vmfvc(MIPSOpcode op) {}
|
||||
void Comp_Vmtvc(MIPSOpcode op) {}
|
||||
void Comp_Vmmov(MIPSOpcode op) {}
|
||||
void Comp_VScl(MIPSOpcode op) {}
|
||||
void Comp_Vmmul(MIPSOpcode op) {}
|
||||
void Comp_Vmscl(MIPSOpcode op) {}
|
||||
void Comp_Vtfm(MIPSOpcode op) {}
|
||||
void Comp_VHdp(MIPSOpcode op) {}
|
||||
void Comp_VCrs(MIPSOpcode op) {}
|
||||
void Comp_VDet(MIPSOpcode op) {}
|
||||
void Comp_Vi2x(MIPSOpcode op) {}
|
||||
void Comp_Vx2i(MIPSOpcode op) {}
|
||||
void Comp_Vf2i(MIPSOpcode op) {}
|
||||
void Comp_Vi2f(MIPSOpcode op) {}
|
||||
void Comp_Vh2f(MIPSOpcode op) {}
|
||||
void Comp_Vcst(MIPSOpcode op) {}
|
||||
void Comp_Vhoriz(MIPSOpcode op) {}
|
||||
void Comp_VRot(MIPSOpcode op) {}
|
||||
void Comp_VIdt(MIPSOpcode op) {}
|
||||
void Comp_Vcmp(MIPSOpcode op) {}
|
||||
void Comp_Vcmov(MIPSOpcode op) {}
|
||||
void Comp_Viim(MIPSOpcode op) {}
|
||||
void Comp_Vfim(MIPSOpcode op) {}
|
||||
void Comp_VCrossQuat(MIPSOpcode op) {}
|
||||
void Comp_Vsgn(MIPSOpcode op) {}
|
||||
void Comp_Vocp(MIPSOpcode op) {}
|
||||
void Comp_ColorConv(MIPSOpcode op) {}
|
||||
void Comp_Vbfy(MIPSOpcode op) {}
|
||||
void Comp_SV(MIPSOpcode op) override {}
|
||||
void Comp_SVQ(MIPSOpcode op) override {}
|
||||
void Comp_VPFX(MIPSOpcode op) override {}
|
||||
void Comp_VVectorInit(MIPSOpcode op) override {}
|
||||
void Comp_VMatrixInit(MIPSOpcode op) override {}
|
||||
void Comp_VDot(MIPSOpcode op) override {}
|
||||
void Comp_VecDo3(MIPSOpcode op) override {}
|
||||
void Comp_VV2Op(MIPSOpcode op) override {}
|
||||
void Comp_Mftv(MIPSOpcode op) override {}
|
||||
void Comp_Vmfvc(MIPSOpcode op) override {}
|
||||
void Comp_Vmtvc(MIPSOpcode op) override {}
|
||||
void Comp_Vmmov(MIPSOpcode op) override {}
|
||||
void Comp_VScl(MIPSOpcode op) override {}
|
||||
void Comp_Vmmul(MIPSOpcode op) override {}
|
||||
void Comp_Vmscl(MIPSOpcode op) override {}
|
||||
void Comp_Vtfm(MIPSOpcode op) override {}
|
||||
void Comp_VHdp(MIPSOpcode op) override {}
|
||||
void Comp_VCrs(MIPSOpcode op) override {}
|
||||
void Comp_VDet(MIPSOpcode op) override {}
|
||||
void Comp_Vi2x(MIPSOpcode op) override {}
|
||||
void Comp_Vx2i(MIPSOpcode op) override {}
|
||||
void Comp_Vf2i(MIPSOpcode op) override {}
|
||||
void Comp_Vi2f(MIPSOpcode op) override {}
|
||||
void Comp_Vh2f(MIPSOpcode op) override {}
|
||||
void Comp_Vcst(MIPSOpcode op) override {}
|
||||
void Comp_Vhoriz(MIPSOpcode op) override {}
|
||||
void Comp_VRot(MIPSOpcode op) override {}
|
||||
void Comp_VIdt(MIPSOpcode op) override {}
|
||||
void Comp_Vcmp(MIPSOpcode op) override {}
|
||||
void Comp_Vcmov(MIPSOpcode op) override {}
|
||||
void Comp_Viim(MIPSOpcode op) override {}
|
||||
void Comp_Vfim(MIPSOpcode op) override {}
|
||||
void Comp_VCrossQuat(MIPSOpcode op) override {}
|
||||
void Comp_Vsgn(MIPSOpcode op) override {}
|
||||
void Comp_Vocp(MIPSOpcode op) override {}
|
||||
void Comp_ColorConv(MIPSOpcode op) override {}
|
||||
void Comp_Vbfy(MIPSOpcode op) override {}
|
||||
|
||||
int Replace_fabsf() { return 0; }
|
||||
int Replace_fabsf() override { return 0; }
|
||||
|
||||
JitBlockCache *GetBlockCache() { return &blocks; }
|
||||
JitBlockCache *GetBlockCache() override { return &blocks; }
|
||||
JitBlockCacheDebugInterface *GetBlockCacheDebugInterface() override { return &blocks; }
|
||||
|
||||
MIPSOpcode GetOriginalOp(MIPSOpcode op) override { return op; }
|
||||
@ -147,7 +147,7 @@ public:
|
||||
void LinkBlock(u8 *exitPoint, const u8 *checkedEntry) override {}
|
||||
void UnlinkBlock(u8 *checkedEntry, u32 originalAddress) override {}
|
||||
|
||||
void EatPrefix() { js.EatPrefix(); }
|
||||
void EatPrefix() override { js.EatPrefix(); }
|
||||
|
||||
private:
|
||||
void GenerateFixedCode();
|
||||
|
@ -138,9 +138,11 @@ namespace Reporting
|
||||
|
||||
if (crcPending) {
|
||||
// Already in process.
|
||||
INFO_LOG(SYSTEM, "CRC already pending");
|
||||
return;
|
||||
}
|
||||
|
||||
INFO_LOG(SYSTEM, "Starting CRC calculation");
|
||||
crcFilename = gamePath;
|
||||
crcPending = true;
|
||||
crcCancel = false;
|
||||
@ -178,15 +180,24 @@ namespace Reporting
|
||||
|
||||
static void PurgeCRC() {
|
||||
std::unique_lock<std::mutex> guard(crcLock);
|
||||
crcCancel = true;
|
||||
while (crcPending) {
|
||||
crcCond.wait(guard);
|
||||
if (crcPending) {
|
||||
INFO_LOG(SYSTEM, "Cancelling CRC calculation");
|
||||
crcCancel = true;
|
||||
while (crcPending) {
|
||||
crcCond.wait(guard);
|
||||
}
|
||||
} else {
|
||||
INFO_LOG(SYSTEM, "no CRC pending");
|
||||
}
|
||||
|
||||
if (crcThread.joinable())
|
||||
crcThread.join();
|
||||
}
|
||||
|
||||
void CancelCRC() {
|
||||
PurgeCRC();
|
||||
}
|
||||
|
||||
// Returns the full host (e.g. report.ppsspp.org:80.)
|
||||
std::string ServerHost()
|
||||
{
|
||||
|
@ -63,6 +63,8 @@ namespace Reporting
|
||||
// Returns true if the hash is available, does not queue if not.
|
||||
bool HasCRC(const Path &gamePath);
|
||||
|
||||
void CancelCRC();
|
||||
|
||||
// Blocks until the CRC hash is available for game, and returns it.
|
||||
// To avoid stalling, call HasCRC() in update() or similar and call this if it returns true.
|
||||
uint32_t RetrieveCRC(const Path &gamePath);
|
||||
|
@ -49,6 +49,9 @@ GameScreen::GameScreen(const Path &gamePath) : UIDialogScreenWithGameBackground(
|
||||
}
|
||||
|
||||
GameScreen::~GameScreen() {
|
||||
if (CRC32string == "...") {
|
||||
Reporting::CancelCRC();
|
||||
}
|
||||
}
|
||||
|
||||
template <typename I> std::string int2hexstr(I w, size_t hex_len = sizeof(I) << 1) {
|
||||
@ -68,6 +71,9 @@ void GameScreen::update() {
|
||||
if (Reporting::HasCRC(gamePath_)) {
|
||||
uint32_t crcvalue = Reporting::RetrieveCRC(gamePath_);
|
||||
CRC32string = int2hexstr(crcvalue);
|
||||
tvCRC_->SetVisibility(UI::V_VISIBLE);
|
||||
tvCRC_->SetText(CRC32string);
|
||||
btnCalcCRC_->SetVisibility(UI::V_GONE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -171,7 +177,13 @@ void GameScreen::CreateViews() {
|
||||
btnSetBackground_ = rightColumnItems->Add(new Choice(ga->T("Use UI background")));
|
||||
btnSetBackground_->OnClick.Handle(this, &GameScreen::OnSetBackground);
|
||||
btnSetBackground_->SetVisibility(V_GONE);
|
||||
rightColumnItems->Add(new ChoiceWithValueDisplay(&CRC32string, ga->T("CRC32 CALC"), (const char*)nullptr))->OnClick.Handle(this, &GameScreen::OnDoCRC32);
|
||||
|
||||
if (!Reporting::HasCRC(gamePath_)) {
|
||||
btnCalcCRC_ = rightColumnItems->Add(new ChoiceWithValueDisplay(&CRC32string, ga->T("Calculate CRC"), (const char*)nullptr));
|
||||
btnCalcCRC_->OnClick.Handle(this, &GameScreen::OnDoCRC32);
|
||||
} else {
|
||||
btnCalcCRC_ = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
UI::Choice *GameScreen::AddOtherChoice(UI::Choice *choice) {
|
||||
@ -303,6 +315,8 @@ UI::EventReturn GameScreen::OnCwCheat(UI::EventParams &e) {
|
||||
|
||||
UI::EventReturn GameScreen::OnDoCRC32(UI::EventParams& e) {
|
||||
CRC32string = "...";
|
||||
Reporting::QueueCRC(gamePath_);
|
||||
btnCalcCRC_->SetEnabled(false);
|
||||
return UI::EVENT_DONE;
|
||||
}
|
||||
|
||||
|
@ -66,18 +66,21 @@ private:
|
||||
UI::EventReturn OnDoCRC32(UI::EventParams& e);
|
||||
|
||||
// As we load metadata in the background, we need to be able to update these after the fact.
|
||||
UI::TextView *tvTitle_;
|
||||
UI::TextView *tvGameSize_;
|
||||
UI::TextView *tvSaveDataSize_;
|
||||
UI::TextView *tvInstallDataSize_;
|
||||
UI::TextView *tvRegion_;
|
||||
UI::TextView *tvCRC_;
|
||||
UI::TextView *tvTitle_ = nullptr;
|
||||
UI::TextView *tvGameSize_ = nullptr;
|
||||
UI::TextView *tvSaveDataSize_ = nullptr;
|
||||
UI::TextView *tvInstallDataSize_ = nullptr;
|
||||
UI::TextView *tvRegion_ = nullptr;
|
||||
UI::TextView *tvCRC_ = nullptr;
|
||||
|
||||
UI::Choice *btnGameSettings_ = nullptr;
|
||||
UI::Choice *btnCreateGameConfig_ = nullptr;
|
||||
UI::Choice *btnDeleteGameConfig_ = nullptr;
|
||||
UI::Choice *btnDeleteSaveData_ = nullptr;
|
||||
UI::Choice *btnSetBackground_ = nullptr;
|
||||
|
||||
UI::Choice *btnCalcCRC_ = nullptr;
|
||||
|
||||
UI::Choice *btnGameSettings_;
|
||||
UI::Choice *btnCreateGameConfig_;
|
||||
UI::Choice *btnDeleteGameConfig_;
|
||||
UI::Choice *btnDeleteSaveData_;
|
||||
UI::Choice *btnSetBackground_;
|
||||
std::vector<UI::Choice *> otherChoices_;
|
||||
std::vector<Path> saveDirs;
|
||||
std::string CRC32string;
|
||||
|
Loading…
Reference in New Issue
Block a user