From 07bd9aa357f9a002f17c224e34a8f771944823d3 Mon Sep 17 00:00:00 2001 From: yellows8 Date: Tue, 20 May 2014 23:27:50 -0400 Subject: [PATCH] Fixed issues involving application termination. This fixed the applet launch hang after launching a ctrulib app, and fixed the issue where the power/HOME buttons did not work correctly under the power-off screen. --- libctru/source/APT.c | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/libctru/source/APT.c b/libctru/source/APT.c index e9ccdfd..0aafd34 100644 --- a/libctru/source/APT.c +++ b/libctru/source/APT.c @@ -200,10 +200,6 @@ void aptEventHandler(u32 arg) aptSetStatus(APP_RUNNING); break; case 0xC: //exiting application - aptOpenSession(); - APT_ReplySleepQuery(NULL, currentAppId, 0x0); - aptCloseSession(); - runThread=false; aptSetStatus(APP_EXITING); //app exit signal break; @@ -251,23 +247,37 @@ void aptExit() u8 buf1[4], buf2[4]; buf1[0]=0x02; buf1[1]=0x00; buf1[2]=0x00; buf1[3]=0x00; + + buf1[0]=0x10; aptOpenSession(); APT_AppletUtility(NULL, NULL, 0x7, 0x4, buf1, 0x1, buf2); aptCloseSession(); + + buf1[0]=0x00; + aptOpenSession(); + APT_AppletUtility(NULL, NULL, 0x4, 0x1, buf1, 0x1, buf2); + aptCloseSession(); + + buf1[0]=0x01; + aptOpenSession(); + APT_AppletUtility(NULL, NULL, 0x7, 0x4, buf1, 0x1, buf2); + aptCloseSession(); + + buf1[0]=0x00; aptOpenSession(); APT_AppletUtility(NULL, NULL, 0x4, 0x1, buf1, 0x1, buf2); aptCloseSession(); - aptOpenSession(); - APT_AppletUtility(NULL, NULL, 0x7, 0x4, buf1, 0x1, buf2); - aptCloseSession(); - aptOpenSession(); - APT_AppletUtility(NULL, NULL, 0x4, 0x1, buf1, 0x1, buf2); - aptCloseSession(); aptOpenSession(); APT_AppletUtility(NULL, NULL, 0x4, 0x1, buf1, 0x1, buf2); aptCloseSession(); + if(aptGetStatusPower()==1)//This is only executed when application-termination was triggered via the home-menu power-off screen. + { + aptOpenSession(); + APT_ReplySleepQuery(NULL, currentAppId, 0x0); + aptCloseSession(); + } aptOpenSession(); APT_PrepareToCloseApplication(NULL, 0x1);