diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c index 01e5ad68..8ec86ff1 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/sysmenu_lib.c @@ -492,14 +492,17 @@ static OSThread thread; static u64 stack[ STACK_SIZE / sizeof(u64) ]; // 指定タイトルを別スレッドでロード開始する -OSThread* SYSM_StartLoadTitle( TitleProperty *pBootTitle ) +void SYSM_StartLoadTitle( TitleProperty *pBootTitle ) { s_load_success = FALSE; OS_InitThread(); OS_CreateThread( &thread, (void (*)(void *))SYSMi_LoadTitleThreadFunc, (void*)pBootTitle, stack+STACK_SIZE/sizeof(u64), STACK_SIZE,THREAD_PRIO ); OS_WakeupThreadDirect( &thread ); - - return &thread; +} + +BOOL SYSM_IsLoadTitleFinished( void ) +{ + return OS_IsThreadTerminated( &thread ); } // ロード済みの指定タイトルの認証とブートを行う @@ -534,11 +537,10 @@ AuthResult SYSM_AuthenticateTitle( TitleProperty *pBootTitle ) // もしかすると使わないかも AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle ) { - OSThread *t; // 指定タイトルのロード - t = SYSM_StartLoadTitle( pBootTitle ); + SYSM_StartLoadTitle( pBootTitle ); - OS_JoinThread(t); + OS_JoinThread(&thread); // 認証 return SYSM_AuthenticateTitle( pBootTitle ); diff --git a/build/systemMenu_RED/Launcher/ARM9/src/main.c b/build/systemMenu_RED/Launcher/ARM9/src/main.c index d4f3de00..be995191 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/main.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/main.c @@ -51,7 +51,6 @@ void TwlMain( void ) u32 state = START; TitleProperty *pBootTitle = NULL; TitleProperty pTitleList[ LAUNCHER_TITLE_LIST_NUM ]; - OSThread *thread; // システムメニュー初期化---------- SYSM_Init( Alloc, Free ); // OS_Initの前でコール。 @@ -138,12 +137,12 @@ void TwlMain( void ) } break; case LOAD_START: - thread = SYSM_StartLoadTitle( pBootTitle ); + SYSM_StartLoadTitle( pBootTitle ); state = LOADING; break; case LOADING: LauncherLoading( pTitleList ); - if(OS_IsThreadTerminated( thread )) + if( SYSM_IsLoadTitleFinished() ) { GX_DispOff(); GXS_DispOff(); diff --git a/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h b/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h index e07513fe..cab2923e 100644 --- a/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h +++ b/include/sysmenu/sysmenu_lib/ARM9/sysmenu_api.h @@ -83,7 +83,8 @@ extern int SYSM_GetCardTitleList( TitleProperty *pTitleList_Card ); // extern int SYSM_GetNandTitleList( TitleProperty *pTitleList_Nand, int size ); // NAND アプリタイトルリストの取得 // アプリ起動 -extern OSThread* SYSM_StartLoadTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを別スレッドでロード開始 +extern void SYSM_StartLoadTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを別スレッドでロード開始 +extern BOOL SYSM_IsLoadTitleFinished( void ); // SYSM_StartLoadTitleで起動したスレッドが終了したかどうかを確認 extern AuthResult SYSM_AuthenticateTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを認証してブート extern AuthResult SYSM_LoadAndAuthenticateTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyをロード&認証してブート // 成功時は、never return.