]> Chaos Git - corbenik/ctrulib.git/commitdiff
Fixed issues involving application termination. This fixed the applet launch hang...
authoryellows8 <yellowstar6@gmail.com>
Wed, 21 May 2014 03:27:50 +0000 (23:27 -0400)
committeryellows8 <yellowstar6@gmail.com>
Wed, 21 May 2014 03:27:50 +0000 (23:27 -0400)
libctru/source/APT.c

index e9ccdfdec1f6b645b51a1844c06f38bd942e5f6d..0aafd3445a85dd50c4425ae3449b3cf745405c1c 100644 (file)
@@ -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, 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);