進捗表示時にブロックしていたのを修正

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@851 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
N2614 2015-03-25 04:29:57 +00:00
parent 8283130685
commit 0faf549782
3 changed files with 9 additions and 15 deletions

View File

@ -72,7 +72,7 @@ nn::Result PreorderTitleRestorer::Execute(nn::ProgramId list[], size_t size, nn:
for(s32 i = 0; i < size; ++i) for(s32 i = 0; i < size; ++i)
{ {
m_Progress = i * 100 / size; NN_LOG("progress=%llu\n", m_Progress);
std::string xml; std::string xml;
nn::cfg::CfgCountryCode deliveredCountry; nn::cfg::CfgCountryCode deliveredCountry;
COMMON_LOGGER_RETURN_RESULT_IF_FAILED( COMMON_LOGGER_RETURN_RESULT_IF_FAILED(
@ -80,6 +80,7 @@ nn::Result PreorderTitleRestorer::Execute(nn::ProgramId list[], size_t size, nn:
COMMON_LOGGER_RETURN_RESULT_IF_FAILED( COMMON_LOGGER_RETURN_RESULT_IF_FAILED(
SetExternalSeedOrPlayableDate(list[i], deliveredCountry, xml)); SetExternalSeedOrPlayableDate(list[i], deliveredCountry, xml));
m_Progress = (i + 1) * 100 / size;
} }
COMMON_LOGGER_RETURN_RESULT_IF_FAILED( COMMON_LOGGER_RETURN_RESULT_IF_FAILED(

View File

@ -22,7 +22,6 @@ const size_t PreorderTitleRestorerManager::STACK_SIZE;
nn::Result PreorderTitleRestorerManager::s_Result; nn::Result PreorderTitleRestorerManager::s_Result;
nn::os::Thread PreorderTitleRestorerManager::s_Thread; nn::os::Thread PreorderTitleRestorerManager::s_Thread;
nn::os::StackBuffer<PreorderTitleRestorerManager::STACK_SIZE> PreorderTitleRestorerManager::s_ThreadStack; nn::os::StackBuffer<PreorderTitleRestorerManager::STACK_SIZE> PreorderTitleRestorerManager::s_ThreadStack;
bool PreorderTitleRestorerManager::s_Started = false;
PreorderTitleRestorer* PreorderTitleRestorerManager::m_Restorer = NULL; PreorderTitleRestorer* PreorderTitleRestorerManager::m_Restorer = NULL;
nn::ProgramId* PreorderTitleRestorerManager::s_List; nn::ProgramId* PreorderTitleRestorerManager::s_List;
size_t PreorderTitleRestorerManager::s_Size; size_t PreorderTitleRestorerManager::s_Size;
@ -44,20 +43,16 @@ PreorderTitleRestorerManager::~PreorderTitleRestorerManager()
void PreorderTitleRestorerManager::Start(nn::ProgramId list[], size_t size, nn::cfg::CTR::CfgCountryCode country, nn::cfg::CTR::CfgRegionCode region) void PreorderTitleRestorerManager::Start(nn::ProgramId list[], size_t size, nn::cfg::CTR::CfgCountryCode country, nn::cfg::CTR::CfgRegionCode region)
{ {
if(!s_Started)
{
s_List = list; s_List = list;
s_Size = size; s_Size = size;
s_Country = country; s_Country = country;
s_Region = region; s_Region = region;
s_Thread.Start(ThreadFunc, s_ThreadStack); s_Thread.Start(ThreadFunc, s_ThreadStack);
s_Started = true;
}
} }
bool PreorderTitleRestorerManager::IsFinished() bool PreorderTitleRestorerManager::IsFinished()
{ {
return s_Thread.IsAlive(); return s_Thread.IsValid() && !s_Thread.IsAlive();
} }
nn::Result PreorderTitleRestorerManager::GetResult() nn::Result PreorderTitleRestorerManager::GetResult()
@ -67,7 +62,7 @@ nn::Result PreorderTitleRestorerManager::GetResult()
void PreorderTitleRestorerManager::End() void PreorderTitleRestorerManager::End()
{ {
if(s_Started) if(s_Thread.IsValid())
{ {
s_Thread.Join(); s_Thread.Join();
s_Thread.Finalize(); s_Thread.Finalize();
@ -75,7 +70,6 @@ void PreorderTitleRestorerManager::End()
{ {
delete m_Restorer; delete m_Restorer;
} }
s_Started = false;
} }
} }

View File

@ -49,7 +49,6 @@ private:
static const size_t STACK_SIZE = 12 * 1024; static const size_t STACK_SIZE = 12 * 1024;
static nn::os::StackBuffer<STACK_SIZE> s_ThreadStack; static nn::os::StackBuffer<STACK_SIZE> s_ThreadStack;
static PreorderTitleRestorer* m_Restorer; static PreorderTitleRestorer* m_Restorer;
static bool s_Started;
}; };
} /* namespace ConsoleRestore */ } /* namespace ConsoleRestore */