diff --git a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c index 6e373cfa..cfc1b370 100644 --- a/build/libraries_sysmenu/sysmenu/ARM9/src/title.c +++ b/build/libraries_sysmenu/sysmenu/ARM9/src/title.c @@ -372,7 +372,7 @@ void SYSM_InitTitleList( void ) } // SYSM_InitTitleListを事前に呼ぶ必要あり -void SYSM_GetNandTitleListMakerInfo( void ) +void SYSM_MakeNandTitleListMakerInfo( void ) { AMN_restartWithReadNandTitleHeaderShort(); while (!AMN_isNandTitleListReady()) { @@ -393,6 +393,27 @@ TitleProperty *SYSM_GetNandTitleList( void ) return AMN_getTitlePropertyList(); } +// SYSM_InitTitleListを事前に呼ぶ必要あり +void SYSM_MakeNandTitleListMakerInfoAsync( void ) +{ + AMN_restartWithReadNandTitleHeaderShort(); +} + +void SYSM_MakeNandTitleListAsync( void ) +{ + AMN_restartWithReadNandTitle(); +} + +BOOL SYSM_isNandTitleListReady( void ) +{ + return AMN_isNandTitleListReady(); +} + +TitleProperty *SYSM_GetTitlePropertyList( void ) +{ + return AMN_getTitlePropertyList(); +} + // ============================================================================ // // diff --git a/build/systemMenu_RED/Launcher/ARM9/src/main.c b/build/systemMenu_RED/Launcher/ARM9/src/main.c index a0ea7290..59ffada7 100644 --- a/build/systemMenu_RED/Launcher/ARM9/src/main.c +++ b/build/systemMenu_RED/Launcher/ARM9/src/main.c @@ -329,10 +329,10 @@ void TwlMain( void ) // 「ダイレクトブートでない」なら if( !pBootTitle ) { // NAND & カードアプリリスト取得 - sp_titleList = SYSM_GetNandTitleList(); // NANDアプリリストの取得(内蔵アプリはsp_titleList[1]から格納される) + SYSM_MakeNandTitleListAsync(); // NANDアプリリストの作成(取得はしていないので注意) }else { - SYSM_GetNandTitleListMakerInfo(); // アプリに引き渡すタイトルリスト作成用情報の取得 + SYSM_MakeNandTitleListMakerInfoAsync(); // アプリに引き渡すタイトルリスト作成用情報の作成 } // end時間計測5 #if (MEASURE_TIME == 1) @@ -470,9 +470,11 @@ MAIN_LOOP_START: break; case LOGODEMO: if( IsFinishedLoadSharedFont() && // 通常ブート時は、フォントロード終了をここでチェック - LogoMain() + LogoMain() && + SYSM_isNandTitleListReady() // NANDタイトル取得完了かどうかチェック ) { if( !direct_boot ) { + sp_titleList = SYSM_GetTitlePropertyList();// TitlePropertyListの取得 state = LAUNCHER_INIT; }else { state = LOAD_START; diff --git a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h index a5d7c9b4..bd5840e0 100644 --- a/include/sysmenu/sysmenu_lib/common/sysmenu_api.h +++ b/include/sysmenu/sysmenu_lib/common/sysmenu_api.h @@ -90,7 +90,11 @@ extern void SYSM_DeleteTmpDirectory( TitleProperty *pBootTitle ); / extern TitleProperty *SYSM_GetCardTitleList( BOOL *changed ); // カードアプリタイトルリストの取得 extern void SYSM_InitTitleList( void ); // アプリタイトルリスト取得準備 extern TitleProperty *SYSM_GetNandTitleList( void ); // NAND アプリタイトルリストの取得 -extern void SYSM_GetNandTitleListMakerInfo( void ); // アプリ引き渡しタイトルリスト作成用情報の取得(ダイレクトブート用) +extern void SYSM_MakeNandTitleListMakerInfo( void ); // アプリ引き渡しタイトルリスト作成用情報の取得(ダイレクトブート用) +extern void SYSM_MakeNandTitleListAsync( void ); // 非同期版NANDアプリタイトルリストの作成 +extern void SYSM_MakeNandTitleListMakerInfoAsync( void ); // 非同期版アプリ引き渡しタイトルリスト作成用情報の作成 +extern BOOL SYSM_isNandTitleListReady( void ); // 非同期版が終了したかどうかの判定に使う +extern TitleProperty *SYSM_GetTitlePropertyList( void ); // SYSM_MakeNandTitleListAsyncで作成されたアプリリストのポインタを取得 // アプリ起動 extern void SYSM_StartLoadTitle( TitleProperty *pBootTitle ); // 指定したTitlePropertyを別スレッドでロード開始