From fee6b42963a65b0f41d2cf1c0da19b987b6b4408 Mon Sep 17 00:00:00 2001 From: plutoo Date: Sat, 6 Jan 2018 05:57:56 +0100 Subject: [PATCH] Align code style for AM --- nx/include/switch.h | 11 +- nx/include/switch/{services => gfx}/binder.h | 0 nx/include/switch/{ => kernel}/svc.h | 2 +- nx/include/switch/services/applet.h | 60 ++-- nx/source/gfx/gfx.c | 52 ++-- nx/source/services/applet.c | 276 +++++++++++-------- 6 files changed, 231 insertions(+), 170 deletions(-) rename nx/include/switch/{services => gfx}/binder.h (100%) rename nx/include/switch/{ => kernel}/svc.h (99%) diff --git a/nx/include/switch.h b/nx/include/switch.h index deab6a51..b000c904 100644 --- a/nx/include/switch.h +++ b/nx/include/switch.h @@ -10,10 +10,8 @@ extern "C" { #include #include -#include -#include -#include +#include #include #include #include @@ -21,14 +19,14 @@ extern "C" { #include #include -#include +#include +#include #include #include #include #include #include -#include #include #include #include @@ -38,12 +36,15 @@ extern "C" { #include #include +#include #include #include #include #include #include +#include + #include #include #include diff --git a/nx/include/switch/services/binder.h b/nx/include/switch/gfx/binder.h similarity index 100% rename from nx/include/switch/services/binder.h rename to nx/include/switch/gfx/binder.h diff --git a/nx/include/switch/svc.h b/nx/include/switch/kernel/svc.h similarity index 99% rename from nx/include/switch/svc.h rename to nx/include/switch/kernel/svc.h index 67aff4f7..9c371080 100644 --- a/nx/include/switch/svc.h +++ b/nx/include/switch/kernel/svc.h @@ -4,7 +4,7 @@ */ #pragma once -#include "types.h" +#include "../types.h" /// Pseudo handle for the current process #define CUR_PROCESS_HANDLE 0xFFFF8001 diff --git a/nx/include/switch/services/applet.h b/nx/include/switch/services/applet.h index 12fc585b..5c0f9aa4 100644 --- a/nx/include/switch/services/applet.h +++ b/nx/include/switch/services/applet.h @@ -1,39 +1,39 @@ -typedef enum -{ - APPLET_TYPE_None = -2, - APPLET_TYPE_Default = -1, - APPLET_TYPE_Application = 0, - APPLET_TYPE_SystemApplet = 1, - APPLET_TYPE_LibraryApplet = 2, - APPLET_TYPE_OverlayApplet = 3, - APPLET_TYPE_SystemApplication = 4, -} appletType; +typedef enum { + AppletType_None = -2, + AppletType_Default = -1, + AppletType_Application = 0, + AppletType_SystemApplet = 1, + AppletType_LibraryApplet = 2, + AppletType_OverlayApplet = 3, + AppletType_SystemApplication = 4, +} AppletType; -typedef enum -{ - APPLET_OperationMode_Handheld = 0, - APPLET_OperationMode_Docked = 1, -} appletOperationMode; +typedef enum { + AppletOperationMode_Handheld = 0, + AppletOperationMode_Docked = 1, +} AppletOperationMode; /// applet hook types. typedef enum { - APPLETHOOK_ONFOCUSSTATE = 0, ///< FocusState changed. - APPLETHOOK_ONOPERATIONMODE, ///< OperationMode changed. - APPLETHOOK_ONPERFORMANCEMODE, ///< PerformanceMode changed. + AppletHookType_OnFocusState = 0, ///< FocusState changed. + AppletHookType_OnOperationMode, ///< OperationMode changed. + AppletHookType_OnPerformanceMode, ///< PerformanceMode changed. - APPLETHOOK_COUNT, ///< Number of applet hook types. -} applet_HookType; + AppletHookType_Max, ///< Number of applet hook types. +} AppletHookType; /// applet hook function. -typedef void (*appletHookFn)(applet_HookType hook, void* param); +typedef void (*AppletHookFn)(AppletHookType hook, void* param); /// applet hook cookie. -typedef struct tag_appletHookCookie +typedef struct AppletHookCookie AppletHookCookie; + +struct AppletHookCookie { - struct tag_appletHookCookie* next; ///< Next cookie. - appletHookFn callback; ///< Hook callback. - void* param; ///< Callback parameter. -} appletHookCookie; + AppletHookCookie* next; ///< Next cookie. + AppletHookFn callback; ///< Hook callback. + void* param; ///< Callback parameter. +}; Result appletInitialize(void); void appletExit(void); @@ -55,15 +55,15 @@ bool appletMainLoop(void); * @param callback Function to call when applet's status changes. * @param param User-defined parameter to pass to the callback. */ -void appletHook(appletHookCookie* cookie, appletHookFn callback, void* param); +void appletHook(AppletHookCookie* cookie, AppletHookFn callback, void* param); /** * @brief Removes an applet status hook. * @param cookie Hook cookie to remove. */ -void appletUnhook(appletHookCookie* cookie); +void appletUnhook(AppletHookCookie* cookie); /// These return state which is updated by appletMainLoop() when notifications are received. -u8 appletGetOperationMode(void); +u8 appletGetOperationMode(void); u32 appletGetPerformanceMode(void); -u8 appletGetFocusState(void); +u8 appletGetFocusState(void); diff --git a/nx/source/gfx/gfx.c b/nx/source/gfx/gfx.c index c0fbcc28..8e873e6e 100644 --- a/nx/source/gfx/gfx.c +++ b/nx/source/gfx/gfx.c @@ -26,7 +26,7 @@ size_t g_gfx_framebuf_height=0, g_gfx_framebuf_aligned_height=0; size_t g_gfx_framebuf_display_width=0, g_gfx_framebuf_display_height=0; size_t g_gfx_singleframebuf_size=0; -static appletHookCookie g_gfx_autoresolution_applethookcookie; +static AppletHookCookie g_gfx_autoresolution_applethookcookie; static bool g_gfx_autoresolution_enabled; static s32 g_gfx_autoresolution_handheld_width; @@ -248,7 +248,7 @@ static Result _gfxInit(viServiceType servicetype, const char *DisplayName, u32 L if (R_SUCCEEDED(rc)) rc = _gfxDequeueBuffer(); if (R_SUCCEEDED(rc)) { - if(__nx_applet_type == APPLET_TYPE_Application) { //It's unknown whether there's a better way to handle this. + if (__nx_applet_type == AppletType_Application) { //It's unknown whether there's a better way to handle this. svcSleepThread(2000000000); } else { @@ -295,34 +295,35 @@ static Result _gfxInit(viServiceType servicetype, const char *DisplayName, u32 L return rc; } -void gfxInitDefault(void) { - nvServiceType nv_servicetype = NVSERVTYPE_Default; +void gfxInitDefault() +{ + nvServiceType nv_servicetype; - if(__nx_applet_type != APPLET_TYPE_None) { - switch(__nx_applet_type) { - case APPLET_TYPE_Application: - case APPLET_TYPE_SystemApplication: - nv_servicetype = NVSERVTYPE_Application; - break; + switch(__nx_applet_type) { + case AppletType_Application: + case AppletType_SystemApplication: + nv_servicetype = NVSERVTYPE_Application; + break; - case APPLET_TYPE_SystemApplet: - case APPLET_TYPE_LibraryApplet: - case APPLET_TYPE_OverlayApplet: - nv_servicetype = NVSERVTYPE_Applet; - break; - } + case AppletType_SystemApplet: + case AppletType_LibraryApplet: + case AppletType_OverlayApplet: + default: + nv_servicetype = NVSERVTYPE_Applet; + break; } Result rc = _gfxInit(VILAYERFLAGS_Default, "Default", VILAYERFLAGS_Default, 0, nv_servicetype, 0x300000); if (R_FAILED(rc)) fatalSimple(rc); } -void gfxExit(void) { - u32 i=0; - if(!g_gfxInitialized)return; +void gfxExit() { + u32 i = 0; + if (!g_gfxInitialized) + return; _gfxQueueBuffer(g_gfxCurrentProducerBuffer); - for(i=0; i<2; i++) { + for (i=0; i<2; i++) { if (g_gfx_ProducerSlotsRequested[i]) bufferProducerDetachBuffer(i); } if (g_gfx_ProducerConnected) bufferProducerDisconnect(2); @@ -401,17 +402,18 @@ void gfxConfigureResolution(s32 width, s32 height) { gfxConfigureCrop(0, 0, width, height); } -static void _gfxAutoResolutionAppletHook(applet_HookType hook, void* param) { +static void _gfxAutoResolutionAppletHook(AppletHookType hook, void* param) { u8 mode=0; - if (hook != APPLETHOOK_ONOPERATIONMODE) return; + if (hook != AppletHookType_OnOperationMode) + return; mode = appletGetOperationMode(); - if (mode == APPLET_OperationMode_Handheld) { + if (mode == AppletOperationMode_Handheld) { gfxConfigureResolution(g_gfx_autoresolution_handheld_width, g_gfx_autoresolution_handheld_height); } - else if(mode == APPLET_OperationMode_Docked) { + else if (mode == AppletOperationMode_Docked) { gfxConfigureResolution(g_gfx_autoresolution_docked_width, g_gfx_autoresolution_docked_height); } } @@ -429,7 +431,7 @@ void gfxConfigureAutoResolution(bool enable, s32 handheld_width, s32 handheld_he g_gfx_autoresolution_docked_width = docked_width; g_gfx_autoresolution_docked_height = docked_height; - if (enable) _gfxAutoResolutionAppletHook(APPLETHOOK_ONOPERATIONMODE, 0); + if (enable) _gfxAutoResolutionAppletHook(AppletHookType_OnOperationMode, 0); if (!enable) gfxConfigureResolution(0, 0); } diff --git a/nx/source/services/applet.c b/nx/source/services/applet.c index 3e07a53d..e78afc98 100644 --- a/nx/source/services/applet.c +++ b/nx/source/services/applet.c @@ -1,7 +1,7 @@ #include #include -__attribute__((weak)) u32 __nx_applet_type = APPLET_TYPE_Default; +__attribute__((weak)) u32 __nx_applet_type = AppletType_Default; __attribute__((weak)) bool __nx_applet_auto_notifyrunning = true; __attribute__((weak)) u8 __nx_applet_AppletAttribute[0x80]; __attribute__((weak)) u32 __nx_applet_PerformanceConfiguration[2] = {/*0x92220008*//*0x20004*//*0x92220007*/0, 0}; @@ -9,7 +9,8 @@ __attribute__((weak)) u32 __nx_applet_PerformanceConfiguration[2] = {/*0x9222000 static Handle g_appletServiceSession = INVALID_HANDLE; static Handle g_appletProxySession = INVALID_HANDLE; -static Handle g_appletIFunctions = INVALID_HANDLE;//From Get*Functions, for ILibraryAppletProxy this is GetLibraryAppletSelfAccessor +// From Get*Functions, for ILibraryAppletProxy. This is GetLibraryAppletSelfAccessor +static Handle g_appletIFunctions = INVALID_HANDLE; static Handle g_appletILibraryAppletCreator = INVALID_HANDLE; static Handle g_appletICommonStateGetter = INVALID_HANDLE; @@ -29,7 +30,7 @@ static u8 g_appletFocusState; static bool g_appletNotifiedRunning = 0; -static appletHookCookie appletFirstHook; +static AppletHookCookie g_appletFirstHook; void appletExit(void); @@ -52,126 +53,169 @@ static Result _appletGetPerformanceMode(u32 *out); static Result _appletSetOperationModeChangedNotification(u8 flag); static Result _appletSetPerformanceModeChangedNotification(u8 flag); -Result appletInitialize(void) { - if (g_appletServiceSession != INVALID_HANDLE) return MAKERESULT(MODULE_LIBNX, LIBNX_ALREADYINITIALIZED); + +Result appletInitialize(void) +{ + if (g_appletServiceSession != INVALID_HANDLE) + return MAKERESULT(MODULE_LIBNX, LIBNX_ALREADYINITIALIZED); + + if (__nx_applet_type==AppletType_None) + return 0; Result rc = 0; - Handle prochandle = CUR_PROCESS_HANDLE; - s32 tmpindex=0; - u32 i; - u32 msg=0; - - if (__nx_applet_type==APPLET_TYPE_None) return 0; g_appletResourceUserId = 0; g_appletNotifiedRunning = 0; - if (__nx_applet_type==APPLET_TYPE_Default) __nx_applet_type = APPLET_TYPE_Application; - - if (__nx_applet_type==APPLET_TYPE_Application) { + switch (__nx_applet_type) { + case AppletType_Default: + __nx_applet_type = AppletType_Application; + // Fallthrough. + case AppletType_Application: rc = smGetService(&g_appletServiceSession, "appletOE"); - } - - if (__nx_applet_type!=APPLET_TYPE_Application) { + break; + default: rc = smGetService(&g_appletServiceSession, "appletAE"); + break; } if (R_SUCCEEDED(rc)) { + #define APT_BUSY_ERROR 0x19280 + do { + u32 cmd_id; + switch(__nx_applet_type) { - default: - rc = MAKERESULT(MODULE_LIBNX, LIBNX_NOTFOUND); - break; - - case APPLET_TYPE_Application: - rc = _appletGetSessionProxy(g_appletServiceSession, &g_appletProxySession, 0, prochandle, NULL); - break; - - case APPLET_TYPE_SystemApplet: - rc = _appletGetSessionProxy(g_appletServiceSession, &g_appletProxySession, 100, prochandle, NULL); - break; - - case APPLET_TYPE_LibraryApplet: - rc = _appletGetSessionProxy(g_appletServiceSession, &g_appletProxySession, /*201*/200, prochandle, /*__nx_applet_AppletAttribute*/NULL); - break; - - case APPLET_TYPE_OverlayApplet: - rc = _appletGetSessionProxy(g_appletServiceSession, &g_appletProxySession, 300, prochandle, NULL); - break; - - case APPLET_TYPE_SystemApplication: - rc = _appletGetSessionProxy(g_appletServiceSession, &g_appletProxySession, 350, prochandle, NULL); - break; + case AppletType_Application: cmd_id = 0; break; + case AppletType_SystemApplet: cmd_id = 100; break; + case AppletType_LibraryApplet: cmd_id = 200; break; + case AppletType_OverlayApplet: cmd_id = 300; break; + case AppletType_SystemApplication: cmd_id = 350; break; + default: fatalSimple(MAKERESULT(MODULE_LIBNX, LIBNX_NOTFOUND)); } - if ((rc & 0x3fffff) == 0x19280) svcSleepThread(10000000); - } while((rc & 0x3fffff) == 0x19280); + rc = _appletGetSessionProxy(g_appletServiceSession, &g_appletProxySession, cmd_id, CUR_PROCESS_HANDLE, NULL); + + if (rc == APT_BUSY_ERROR) { + svcSleepThread(10000000); + } + + } while (rc == APT_BUSY_ERROR); } - if (R_SUCCEEDED(rc)) rc = _appletGetSession(g_appletProxySession, &g_appletIFunctions, 20);//Get*Functions, for ILibraryAppletProxy this is GetLibraryAppletSelfAccessor - //TODO: Add non-application type-specific session init here. + // Get*Functions, for ILibraryAppletProxy this is GetLibraryAppletSelfAccessor + if (R_SUCCEEDED(rc)) + rc = _appletGetSession(g_appletProxySession, &g_appletIFunctions, 20); - if (R_SUCCEEDED(rc)) rc = _appletGetSession(g_appletProxySession, &g_appletILibraryAppletCreator, 11);//GetLibraryAppletCreator - if (R_SUCCEEDED(rc)) rc = _appletGetSession(g_appletProxySession, &g_appletICommonStateGetter, 0);//GetCommonStateGetter - if (R_SUCCEEDED(rc)) rc = _appletGetSession(g_appletProxySession, &g_appletISelfController, 1);//GetSelfController - if (R_SUCCEEDED(rc)) rc = _appletGetSession(g_appletProxySession, &g_appletIWindowController, 2);//GetWindowController (get GetAppletResourceUserId from this) - if (R_SUCCEEDED(rc)) rc = _appletGetAppletResourceUserId(&g_appletResourceUserId); - if (R_SUCCEEDED(rc)) rc = _appletGetSession(g_appletProxySession, &g_appletIAudioController, 3);//GetAudioController - if (R_SUCCEEDED(rc)) rc = _appletGetSession(g_appletProxySession, &g_appletIDisplayController, 4);//GetDisplayController - if (R_SUCCEEDED(rc)) rc = _appletGetSession(g_appletProxySession, &g_appletIDebugFunctions, 1000);//GetDebugFunctions + // TODO: Add non-application type-specific session init here. - if (R_SUCCEEDED(rc) && __nx_applet_type==APPLET_TYPE_Application) { - rc = _appletGetSession(g_appletICommonStateGetter, &g_appletMessageEventHandle, 0);//Reuse _appletGetSession since ipc input/output is the same. (ICommonStateGetter GetEventHandle) + // GetLibraryAppletCreator + if (R_SUCCEEDED(rc)) + rc = _appletGetSession(g_appletProxySession, &g_appletILibraryAppletCreator, 11); + // GetCommonStateGetter + if (R_SUCCEEDED(rc)) + rc = _appletGetSession(g_appletProxySession, &g_appletICommonStateGetter, 0); + // GetSelfController + if (R_SUCCEEDED(rc)) + rc = _appletGetSession(g_appletProxySession, &g_appletISelfController, 1); + // GetWindowController + if (R_SUCCEEDED(rc)) + rc = _appletGetSession(g_appletProxySession, &g_appletIWindowController, 2); + // Get AppletResourceUserId. + if (R_SUCCEEDED(rc)) + rc = _appletGetAppletResourceUserId(&g_appletResourceUserId); + // GetAudioController + if (R_SUCCEEDED(rc)) + rc = _appletGetSession(g_appletProxySession, &g_appletIAudioController, 3); + // GetDisplayController + if (R_SUCCEEDED(rc)) + rc = _appletGetSession(g_appletProxySession, &g_appletIDisplayController, 4); + // GetDebugFunctions + if (R_SUCCEEDED(rc)) + rc = _appletGetSession(g_appletProxySession, &g_appletIDebugFunctions, 1000); + + if (R_SUCCEEDED(rc) && (__nx_applet_type == AppletType_Application)) + { + // Reuse _appletGetSession since ipc input/output is the same. This is ICommonStateGetter::GetEventHandle. + rc = _appletGetSession(g_appletICommonStateGetter, &g_appletMessageEventHandle, 0); if (R_SUCCEEDED(rc)) { do { - while(R_FAILED(svcWaitSynchronization(&tmpindex, &g_appletMessageEventHandle, 1, U64_MAX))); + s32 tmp_index=0; + svcWaitSynchronization(&tmp_index, &g_appletMessageEventHandle, 1, U64_MAX); + u32 msg; rc = _appletReceiveMessage(&msg); - if (R_FAILED(rc)) { - if ((rc & 0x3fffff) == 0x680) continue; + + if (R_FAILED(rc)) + { + if ((rc & 0x3fffff) == 0x680) + continue; + break; } - if (msg==0 || msg!=0xF) continue; + if (msg != 0xF) + continue; rc = _appletGetCurrentFocusState(&g_appletFocusState); - if (R_FAILED(rc)) break; + + if (R_FAILED(rc)) + break; + } while(g_appletFocusState!=1); } - if (R_SUCCEEDED(rc)) rc = _appletAcquireForegroundRights(); + if (R_SUCCEEDED(rc)) + rc = _appletAcquireForegroundRights(); - if (R_SUCCEEDED(rc)) rc = appletSetFocusHandlingMode(0); + if (R_SUCCEEDED(rc)) + rc = appletSetFocusHandlingMode(0); } - if (R_SUCCEEDED(rc) && __nx_applet_auto_notifyrunning) appletNotifyRunning(NULL); + if (R_SUCCEEDED(rc) && __nx_applet_auto_notifyrunning) + appletNotifyRunning(NULL); - if (R_SUCCEEDED(rc)) rc = _appletGetOperationMode(&g_appletOperationMode); - if (R_SUCCEEDED(rc)) rc = _appletGetPerformanceMode(&g_appletPerformanceMode); + if (R_SUCCEEDED(rc)) + rc = _appletGetOperationMode(&g_appletOperationMode); + if (R_SUCCEEDED(rc)) + rc = _appletGetPerformanceMode(&g_appletPerformanceMode); - if (R_SUCCEEDED(rc) && __nx_applet_type!=APPLET_TYPE_Application) rc = _appletGetCurrentFocusState(&g_appletFocusState); + if (R_SUCCEEDED(rc) && __nx_applet_type!=AppletType_Application) + rc = _appletGetCurrentFocusState(&g_appletFocusState); - if (R_SUCCEEDED(rc)) rc = _appletSetOperationModeChangedNotification(1); - if (R_SUCCEEDED(rc)) rc = _appletSetPerformanceModeChangedNotification(1); + if (R_SUCCEEDED(rc)) + rc = _appletSetOperationModeChangedNotification(1); + if (R_SUCCEEDED(rc)) + rc = _appletSetPerformanceModeChangedNotification(1); - if (R_SUCCEEDED(rc)) rc = apmInitialize(); + if (R_SUCCEEDED(rc)) + rc = apmInitialize(); - if (R_SUCCEEDED(rc)) {//Official apps aren't known to use apmSetPerformanceConfiguration with mode=1. - for (i=0; i<2; i++) {//This is broken with the regular "apm" service. - if (__nx_applet_PerformanceConfiguration[i]) rc = apmSetPerformanceConfiguration(i, __nx_applet_PerformanceConfiguration[i]); - if (R_FAILED(rc)) break; + // Official apps aren't known to use apmSetPerformanceConfiguration with mode=1. + if (R_SUCCEEDED(rc)) { + // This is broken with the regular "apm" service. + u32 i; + for (i=0; i<2; i++) + { + if (__nx_applet_PerformanceConfiguration[i]) + rc = apmSetPerformanceConfiguration(i, __nx_applet_PerformanceConfiguration[i]); + + if (R_FAILED(rc)) + break; } } - if (R_FAILED(rc)) appletExit(); + if (R_FAILED(rc)) + appletExit(); return rc; } void appletExit(void) { - if (g_appletServiceSession == INVALID_HANDLE) return; + if (g_appletServiceSession == INVALID_HANDLE) + return; apmExit(); @@ -233,60 +277,62 @@ void appletExit(void) g_appletResourceUserId = 0; } -static void appletCallHook(applet_HookType hookType) +static void appletCallHook(AppletHookType hookType) { - appletHookCookie* c; - for (c = &appletFirstHook; c && c->callback; c = c->next) - c->callback(hookType, c->param); + AppletHookCookie* c; + for (c = &g_appletFirstHook; c && c->callback; c = c->next) + c->callback(hookType, c->param); } -void appletHook(appletHookCookie* cookie, appletHookFn callback, void* param) +void appletHook(AppletHookCookie* cookie, AppletHookFn callback, void* param) { - if (!callback) return; + if (!callback) + return; - appletHookCookie* hook = &appletFirstHook; - *cookie = *hook; // Structure copy. - hook->next = cookie; - hook->callback = callback; - hook->param = param; + AppletHookCookie* hook = &g_appletFirstHook; + *cookie = *hook; // Structure copy. + hook->next = cookie; + hook->callback = callback; + hook->param = param; } -void appletUnhook(appletHookCookie* cookie) +void appletUnhook(AppletHookCookie* cookie) { - appletHookCookie* hook; - for (hook = &appletFirstHook; hook; hook = hook->next) - { - if (hook->next == cookie) - { - *hook = *cookie; // Structure copy. - break; - } - } + AppletHookCookie* hook; + for (hook = &g_appletFirstHook; hook; hook = hook->next) + { + if (hook->next == cookie) + { + *hook = *cookie; // Structure copy. + break; + } + } } static Result appletSetFocusHandlingMode(u32 mode) { - Result rc=0; + Result rc; u8 invals[4]; - if (mode>3) return MAKERESULT(MODULE_LIBNX, LIBNX_BADINPUT); + if (mode > 3) + return MAKERESULT(MODULE_LIBNX, LIBNX_BADINPUT); memset(invals, 0, sizeof(invals)); - if (mode==0 || mode==3) { + if ((mode == 0) || (mode == 3)) { invals[0] = 0; invals[1] = 0; invals[2] = 1; } - if (mode!=3) { + if (mode != 3) { invals[3] = 0; - if (mode==1) { + if (mode == 1) { invals[0] = 1; invals[1] = 1; invals[2] = 0; } - else if (mode==2) { + else if (mode == 2) { invals[0] = 1; invals[1] = 0; invals[2] = 1; @@ -458,7 +504,7 @@ void appletNotifyRunning(u8 *out) { IpcCommand c; ipcInitialize(&c); - if (__nx_applet_type!=APPLET_TYPE_Application || g_appletNotifiedRunning) return; + if (__nx_applet_type!=AppletType_Application || g_appletNotifiedRunning) return; g_appletNotifiedRunning = 1; struct { @@ -825,32 +871,44 @@ bool appletMainLoop(void) { u32 msg=0; s32 tmpindex=0; - if (R_FAILED(svcWaitSynchronization(&tmpindex, &g_appletMessageEventHandle, 1, 0))) return true; + if (R_FAILED(svcWaitSynchronization(&tmpindex, &g_appletMessageEventHandle, 1, 0))) + return true; rc = _appletReceiveMessage(&msg); - if (R_FAILED(rc)) { - if ((rc & 0x3fffff) == 0x680) return true; + + if (R_FAILED(rc)) + { + if ((rc & 0x3fffff) == 0x680) + return true; + fatalSimple(rc); } switch(msg) { case 0xF: rc = _appletGetCurrentFocusState(&g_appletFocusState); - if (R_SUCCEEDED(rc)) appletCallHook(APPLETHOOK_ONFOCUSSTATE); + + if (R_SUCCEEDED(rc)) + appletCallHook(AppletHookType_OnFocusState); break; case 0x1E: rc = _appletGetOperationMode(&g_appletOperationMode); - if (R_SUCCEEDED(rc)) appletCallHook(APPLETHOOK_ONOPERATIONMODE); + + if (R_SUCCEEDED(rc)) + appletCallHook(AppletHookType_OnOperationMode); break; case 0x1F: rc = _appletGetPerformanceMode(&g_appletPerformanceMode); - if (R_SUCCEEDED(rc)) appletCallHook(APPLETHOOK_ONPERFORMANCEMODE); + + if (R_SUCCEEDED(rc)) + appletCallHook(AppletHookType_OnPerformanceMode); break; } - if (R_FAILED(rc)) fatalSimple(rc); + if (R_FAILED(rc)) + fatalSimple(rc); return true; }