Threadが終了したかどうかを正しく判定するように

git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-05-23%20-%20ctr.7z%20+%20svn_v1.068.zip/ctr/svn/ctr_Repair@11 385bec56-5757-e545-9c3a-d8741f4650f1
This commit is contained in:
N2614 2011-02-03 08:30:47 +00:00
parent b285a3a31a
commit 60adc3739f
4 changed files with 11 additions and 26 deletions

View File

@ -56,9 +56,6 @@ nn::os::StackBuffer<EXPORT_THREAD_STACK_SIZE> s_ExportThreadStack;
wchar_t s_RootName[256]; wchar_t s_RootName[256];
// TODO: Thread.IsAlive に置き換える
bool s_IsExportThreadFinished = false;
} }
void DeleteTrash() void DeleteTrash()
@ -344,7 +341,6 @@ void ExportThreadFunc()
{ {
nn::Result result; nn::Result result;
s_IsExportThreadFinished = false;
result = nn::fs::MountSpecialArchive(common::NAND_ARCHIVE_NAME, nn::fs::CTR::ARCHIVE_TYPE_CTR_NAND); result = nn::fs::MountSpecialArchive(common::NAND_ARCHIVE_NAME, nn::fs::CTR::ARCHIVE_TYPE_CTR_NAND);
if(result.IsFailure()) if(result.IsFailure())
{ {
@ -372,7 +368,6 @@ void ExportThreadFunc()
nn::fs::Unmount(common::NAND_ARCHIVE_NAME); nn::fs::Unmount(common::NAND_ARCHIVE_NAME);
NN_LOG("Export Thread Finalize\n"); NN_LOG("Export Thread Finalize\n");
s_IsExportThreadFinished = true;
} }
nn::Result WriteSaveData() nn::Result WriteSaveData()
@ -421,6 +416,7 @@ nn::Result WriteSaveData()
void FinalizeExportThread() void FinalizeExportThread()
{ {
s_ExportThread.Join(); s_ExportThread.Join();
s_ExportThread.Finalize();
} }
void ExportData() void ExportData()
@ -467,7 +463,7 @@ u32 GetProgress()
bool IsExportFinished() bool IsExportFinished()
{ {
return s_IsExportThreadFinished; return !s_ExportThread.IsAlive();
} }
} }

View File

@ -54,7 +54,6 @@ const size_t IMPORT_THREAD_STACK_SIZE = 0x4000;
nn::os::Thread s_ImportThread; nn::os::Thread s_ImportThread;
nn::os::StackBuffer<IMPORT_THREAD_STACK_SIZE> s_ImportThreadStack; nn::os::StackBuffer<IMPORT_THREAD_STACK_SIZE> s_ImportThreadStack;
bool s_IsImportThreadFinished = false;
const size_t TIME_ZONE_LENGTH = 9; // "+23:45" const size_t TIME_ZONE_LENGTH = 9; // "+23:45"
char s_TimeZoneStr[TIME_ZONE_LENGTH]; char s_TimeZoneStr[TIME_ZONE_LENGTH];
@ -584,7 +583,6 @@ void ImportThreadFunc()
{ {
nn::Result result; nn::Result result;
s_IsImportThreadFinished = false;
result = nn::fs::MountSpecialArchive(common::NAND_ARCHIVE_NAME, nn::fs::CTR::ARCHIVE_TYPE_CTR_NAND); result = nn::fs::MountSpecialArchive(common::NAND_ARCHIVE_NAME, nn::fs::CTR::ARCHIVE_TYPE_CTR_NAND);
if(result.IsFailure()) if(result.IsFailure())
{ {
@ -616,8 +614,6 @@ void ImportThreadFunc()
nn::fs::Unmount(common::NAND_ARCHIVE_NAME); nn::fs::Unmount(common::NAND_ARCHIVE_NAME);
NN_LOG("Import Thread Finalize\n"); NN_LOG("Import Thread Finalize\n");
s_IsImportThreadFinished = true;
} }
namespace namespace
@ -734,7 +730,7 @@ void DeleteConsoleInitializedFile()
bool IsImportFinished() bool IsImportFinished()
{ {
return s_IsImportThreadFinished; return !s_ImportThread.IsAlive();
} }
void CreateWriteFinishedFile() void CreateWriteFinishedFile()

View File

@ -33,7 +33,6 @@ namespace {
const size_t NTP_THREAD_STACK_SIZE = 0x1000; const size_t NTP_THREAD_STACK_SIZE = 0x1000;
nn::os::Thread s_NtpThread; nn::os::Thread s_NtpThread;
nn::os::StackBuffer<NTP_THREAD_STACK_SIZE> s_NtpThreadStack; nn::os::StackBuffer<NTP_THREAD_STACK_SIZE> s_NtpThreadStack;
bool s_IsNtpThreadFinish = false;
bool s_NtpSyncSuccessed = false; bool s_NtpSyncSuccessed = false;
@ -339,13 +338,11 @@ void NtpThreadFunc()
// インターネット設定を元に戻す // インターネット設定を元に戻す
RestoreCurrentInternetSetting(); RestoreCurrentInternetSetting();
s_IsNtpThreadFinish = true;
} }
bool IsTimeAdjustFinished() bool IsTimeAdjustFinished()
{ {
return s_IsNtpThreadFinish; return !s_NtpThread.IsAlive();
} }
bool IsTimeAdjustSuccessed() bool IsTimeAdjustSuccessed()
@ -360,6 +357,11 @@ void AdjustTime()
result = nn::ac::CTR::InitializeInternal(); result = nn::ac::CTR::InitializeInternal();
COMMON_LOGGER_RESULT_IF_FAILED(result); COMMON_LOGGER_RESULT_IF_FAILED(result);
if(IsTimeAdjustFinished())
{
s_NtpThread.Join();
s_NtpThread.Finalize();
}
s_NtpThread.Start( NtpThreadFunc, s_NtpThreadStack); s_NtpThread.Start( NtpThreadFunc, s_NtpThreadStack);
} }

View File

@ -50,8 +50,6 @@ namespace
nn::Result s_Result = nn::ResultSuccess(); nn::Result s_Result = nn::ResultSuccess();
bool s_updateFinished = false;
const size_t UPDATER_THREAD_STACK_SIZE = 0x1000; const size_t UPDATER_THREAD_STACK_SIZE = 0x1000;
nn::os::Thread s_UpdaterThread; nn::os::Thread s_UpdaterThread;
nn::os::StackBuffer<UPDATER_THREAD_STACK_SIZE> s_UpdaterThreadStack; nn::os::StackBuffer<UPDATER_THREAD_STACK_SIZE> s_UpdaterThreadStack;
@ -214,32 +212,25 @@ void UpdateThreadFunc()
NN_LOG("[Updater] Finish nim Updater demo.\n"); NN_LOG("[Updater] Finish nim Updater demo.\n");
s_updateFinished = true;
} }
void StartFGNetworkUpdate() void StartFGNetworkUpdate()
{ {
NN_LOG("Start FGNetworkUpdate\n"); NN_LOG("Start FGNetworkUpdate\n");
s_updateFinished = false;
s_Result = nn::ResultSuccess(); s_Result = nn::ResultSuccess();
s_UpdaterThread.Start(UpdateThreadFunc, s_UpdaterThreadStack); s_UpdaterThread.Start(UpdateThreadFunc, s_UpdaterThreadStack);
} }
bool IsUpdaterThreadStateValid()
{
return s_UpdaterThread.IsValid();
}
void FinishFGNetworkUpdate() void FinishFGNetworkUpdate()
{ {
NN_LOG("Finalize FGNetworkUpdate\n"); NN_LOG("Finalize FGNetworkUpdate\n");
s_UpdaterThread.Join(); s_UpdaterThread.Join();
s_UpdaterThread.Finalize();
} }
bool IsNetworkUpdateFinished() bool IsNetworkUpdateFinished()
{ {
return s_updateFinished; return !s_UpdaterThread.IsAlive();
} }
u32 GetUpdateProgress() u32 GetUpdateProgress()