diff --git a/branches/SelfCupExecChecker/main.cpp b/branches/SelfCupExecChecker/main.cpp index eefb523..ea90ee3 100644 --- a/branches/SelfCupExecChecker/main.cpp +++ b/branches/SelfCupExecChecker/main.cpp @@ -114,72 +114,7 @@ namespace return s_progress[s_progressIndex]; } - nn::Result UpdateCore() - { - nn::Result result; - nn::cup::ProgressInfo info; - - /********************** アップデート*******************/ - SetTick(); - s_scrollBuffer->AppendText("Start Card Update")->Render(); - NN_UTIL_RETURN_IF_FAILED(nn::cup::CTR::DoUpdate()); - - // ステータスがStartedになるまで、プログレスは取得できない - s_scrollBuffer->AppendText(""); - do{ - s_scrollBuffer->ReplaceText(" %c Initializing", GetProgressChar())->Render(); - result = nn::cup::CTR::GetProgressInfo(&info); - NN_UTIL_RETURN_IF_FAILED(result); - nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(40)); - }while(info.state==nn::cup::CTR::UPDATE_STATE_INITIALIZING); - - // 抜けた際のstateがFAILEDかどうか確認 - if(info.state==nn::cup::CTR::UPDATE_STATE_FAILED){ - NN_UTIL_RETURN_IF_FAILED(info.lastResult); - } - s_scrollBuffer->ReplaceText(" - Initialized (%lldmsec)", GetConsumedMillisec()); - - /********************* アップデート中 ******************/ - SetTick(); - s_scrollBuffer->AppendText("")->Render(); - do{ - result = nn::cup::CTR::GetProgressInfo(&info); - NN_UTIL_RETURN_IF_FAILED(result); - s_scrollBuffer->ReplaceText(" %c Title %d/%d, size %lld/%lld", - GetProgressChar(), - info.numImportedTitles, info.numTotalTitles, - info.importedSize, info.totalSize)->Render(); - nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(40)); - - }while(info.state==nn::cup::CTR::UPDATE_STATE_STARTED); - // 抜けた際のstateがFAILEDかどうか確認 - if(info.state==nn::cup::CTR::UPDATE_STATE_FAILED){ - NN_UTIL_RETURN_IF_FAILED(info.lastResult); - } - s_scrollBuffer->AppendText(" - Imported (%lldmsec)", GetConsumedMillisec())->Render(); - - /***************** アップデート終了中 ******************/ - SetTick(); - s_scrollBuffer->AppendText("")->Render(); - do{ - result = nn::cup::CTR::GetProgressInfo(&info); - NN_UTIL_RETURN_IF_FAILED(result); - s_scrollBuffer->ReplaceText(" %c Update Finalizing", GetProgressChar())->Render(); - nn::os::Thread::Sleep(nn::fnd::TimeSpan::FromMilliSeconds(40)); - }while(info.state==nn::cup::CTR::UPDATE_STATE_FINALIZING); - // 抜けた際のstateがFAILEDかどうか確認 - if(info.state==nn::cup::CTR::UPDATE_STATE_FAILED){ - NN_UTIL_RETURN_IF_FAILED(info.lastResult); - } - - /******************* アップデート終了 *******************/ - s_scrollBuffer->AppendText(" - Finalized (%lldmsec)", GetConsumedMillisec())->Render(); - s_scrollBuffer->AppendText(""); - - return nn::ResultSuccess(); - } - - nn::Result UpdateSequence(bool *isHandledError) + nn::Result UpdateSequence(bool *isHandledError, bool* needUpdate) { nn::Result result; nn::Result lastResult=nn::ResultSuccess(); @@ -209,16 +144,13 @@ namespace NN_UTIL_RETURN_IF_FAILED(result); s_scrollBuffer->AppendText(" - Need Update (%lldmsec)", GetConsumedMillisec())->Render(); + *needUpdate = true; s_scrollBuffer->AppendText("")->Render(); - lastResult=UpdateCore(); - // Initializeに成功した場合のみ、再びInitializeするためにFinalizeが必要 SetTick(); s_scrollBuffer->AppendText("Finalizing Cup Library")->Render(); NN_UTIL_RETURN_IF_FAILED(nn::cup::CTR::Finalize()); - s_scrollBuffer->AppendText(" - Complete (%lldmsec)", GetConsumedMillisec())->Render(); - s_scrollBuffer->AppendText("")->Render(); return lastResult; } @@ -258,12 +190,13 @@ extern "C" void nnMain() nn::am::ProgramInfo outInfos; result = nn::am::GetProgramInfos(&outInfos, nn::fs::MEDIA_TYPE_NAND, &MMEN_PROGRAM_ID, 1); + bool needUpdate = false; if (result.IsSuccess()) { /******************** CUPの実行 *******************/ bool isHandledError = false; - result = UpdateSequence(&isHandledError); + result = UpdateSequence(&isHandledError, &needUpdate); if (isHandledError == false && result.IsFailure()) { { @@ -283,7 +216,11 @@ extern "C" void nnMain() for(;;) { s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY0); - if(result.IsSuccess() || result == nn::cup::CTR::ResultUpdateNotRequired()) + if(needUpdate) + { + s_RenderSystem.SetClearColor(NN_GX_DISPLAY0, 1, 1, 0, 1); + } + else if(result.IsSuccess() || result == nn::cup::CTR::ResultUpdateNotRequired()) { s_RenderSystem.SetClearColor(NN_GX_DISPLAY0, 0, 1, 0, 1); } @@ -294,7 +231,11 @@ extern "C" void nnMain() s_RenderSystem.Clear(); s_RenderSystem.SwapBuffers(); s_RenderSystem.SetRenderTarget(NN_GX_DISPLAY1); - if(result.IsSuccess() || result == nn::cup::CTR::ResultUpdateNotRequired()) + if(needUpdate) + { + s_RenderSystem.SetClearColor(NN_GX_DISPLAY0, 1, 1, 0, 1); + } + else if(result.IsSuccess() || result == nn::cup::CTR::ResultUpdateNotRequired()) { s_RenderSystem.SetClearColor(NN_GX_DISPLAY1, 0, 1, 0, 1); }