apt: Remove aptLaunchLibraryApplet's return value/hidden aptMainLoop call

This commit is contained in:
fincs 2020-06-10 20:14:01 +02:00
parent ac8656f8b2
commit 6ce690828c
No known key found for this signature in database
GPG Key ID: 62C7609ADA219C60
5 changed files with 28 additions and 38 deletions

View File

@ -89,9 +89,8 @@ void miiSelectorInit(MiiSelectorConf *conf);
* @brief Launch the Mii selector library applet * @brief Launch the Mii selector library applet
* *
* @param conf Configuration determining how the applet should behave * @param conf Configuration determining how the applet should behave
* @param returnbuf Data returned by the applet
*/ */
Result miiSelectorLaunch(const MiiSelectorConf *conf, MiiSelectorReturn* returnbuf); void miiSelectorLaunch(const MiiSelectorConf *conf, MiiSelectorReturn* returnbuf);
/** /**
* @brief Sets title of the Mii selector library applet * @brief Sets title of the Mii selector library applet

View File

@ -211,9 +211,8 @@ void aptSetMessageCallback(aptMessageCb callback, void* user);
* @param buf Input/output buffer that contains launch parameters on entry and result data on exit. * @param buf Input/output buffer that contains launch parameters on entry and result data on exit.
* @param bufsize Size of the buffer. * @param bufsize Size of the buffer.
* @param handle Handle to pass to the library applet. * @param handle Handle to pass to the library applet.
* @return Whether the application should continue running after the library applet launch.
*/ */
bool aptLaunchLibraryApplet(NS_APPID appId, void* buf, size_t bufsize, Handle handle); void aptLaunchLibraryApplet(NS_APPID appId, void* buf, size_t bufsize, Handle handle);
/** /**
* @brief Sets the chainloader target. * @brief Sets the chainloader target.

View File

@ -18,7 +18,7 @@ void miiSelectorInit(MiiSelectorConf *conf)
conf->mii_whitelist[i] = 1; conf->mii_whitelist[i] = 1;
} }
Result miiSelectorLaunch(const MiiSelectorConf *conf, MiiSelectorReturn *returnbuf) void miiSelectorLaunch(const MiiSelectorConf *conf, MiiSelectorReturn *returnbuf)
{ {
union { union {
MiiSelectorConf config; MiiSelectorConf config;
@ -28,11 +28,9 @@ Result miiSelectorLaunch(const MiiSelectorConf *conf, MiiSelectorReturn *returnb
memcpy(&ctx.config, conf, sizeof(MiiSelectorConf)); memcpy(&ctx.config, conf, sizeof(MiiSelectorConf));
ctx.config.magic = MIISELECTOR_MAGIC; ctx.config.magic = MIISELECTOR_MAGIC;
Result ret = aptLaunchLibraryApplet(APPID_APPLETED, &ctx.config, sizeof(MiiSelectorConf), 0); aptLaunchLibraryApplet(APPID_APPLETED, &ctx.config, sizeof(MiiSelectorConf), 0);
if(R_SUCCEEDED(ret) && returnbuf) if(returnbuf)
memcpy(returnbuf, &ctx.ret, sizeof(MiiSelectorReturn)); memcpy(returnbuf, &ctx.ret, sizeof(MiiSelectorReturn));
return ret;
} }
static void miiSelectorConvertToUTF8(char* out, const u16* in, int max) static void miiSelectorConvertToUTF8(char* out, const u16* in, int max)

View File

@ -238,20 +238,11 @@ SwkbdButton swkbdInputText(SwkbdState* swkbd, char* buf, size_t bufsize)
// Launch swkbd // Launch swkbd
memset(swkbd->reserved, 0, sizeof(swkbd->reserved)); memset(swkbd->reserved, 0, sizeof(swkbd->reserved));
if (extra.callback) aptSetMessageCallback(swkbdMessageCallback, &extra); if (extra.callback) aptSetMessageCallback(swkbdMessageCallback, &extra);
bool ret = aptLaunchLibraryApplet(APPID_SOFTWARE_KEYBOARD, swkbd, sizeof(*swkbd), swkbdSharedMemHandle); aptLaunchLibraryApplet(APPID_SOFTWARE_KEYBOARD, swkbd, sizeof(*swkbd), swkbdSharedMemHandle);
if (extra.callback) aptSetMessageCallback(NULL, NULL); if (extra.callback) aptSetMessageCallback(NULL, NULL);
svcCloseHandle(swkbdSharedMemHandle); svcCloseHandle(swkbdSharedMemHandle);
SwkbdButton button = SWKBD_BUTTON_NONE; SwkbdButton button = SWKBD_BUTTON_NONE;
if (ret)
{
u16* text16 = (u16*)(swkbdSharedMem+swkbd->text_offset);
text16[swkbd->text_length] = 0;
swkbdConvertToUTF8(buf, text16, bufsize-1);
if (swkbd->save_state_flags & BIT(0)) memcpy(extra.status_data, swkbdSharedMem+swkbd->status_offset, sizeof(SwkbdStatusData));
if (swkbd->save_state_flags & BIT(1)) memcpy(extra.learning_data, swkbdSharedMem+swkbd->learning_offset, sizeof(SwkbdLearningData));
switch (swkbd->result) switch (swkbd->result)
{ {
case SWKBD_D1_CLICK0: case SWKBD_D1_CLICK0:
@ -269,7 +260,12 @@ SwkbdButton swkbdInputText(SwkbdState* swkbd, char* buf, size_t bufsize)
default: default:
break; break;
} }
}
u16* text16 = (u16*)(swkbdSharedMem+swkbd->text_offset);
text16[swkbd->text_length] = 0;
swkbdConvertToUTF8(buf, text16, bufsize-1);
if (swkbd->save_state_flags & BIT(0)) memcpy(extra.status_data, swkbdSharedMem+swkbd->status_offset, sizeof(SwkbdStatusData));
if (swkbd->save_state_flags & BIT(1)) memcpy(extra.learning_data, swkbdSharedMem+swkbd->learning_offset, sizeof(SwkbdLearningData));
free(swkbdSharedMem); free(swkbdSharedMem);
return button; return button;

View File

@ -730,7 +730,7 @@ void aptSetMessageCallback(aptMessageCb callback, void* user)
aptMessageFuncData = user; aptMessageFuncData = user;
} }
bool aptLaunchLibraryApplet(NS_APPID appId, void* buf, size_t bufsize, Handle handle) void aptLaunchLibraryApplet(NS_APPID appId, void* buf, size_t bufsize, Handle handle)
{ {
bool sleep = aptIsSleepAllowed(); bool sleep = aptIsSleepAllowed();
@ -752,8 +752,6 @@ bool aptLaunchLibraryApplet(NS_APPID appId, void* buf, size_t bufsize, Handle ha
aptWaitForWakeUp(TR_LIBAPPLET); aptWaitForWakeUp(TR_LIBAPPLET);
memcpy(buf, aptParameters, bufsize); memcpy(buf, aptParameters, bufsize);
aptSetSleepAllowed(sleep); aptSetSleepAllowed(sleep);
return aptMainLoop();
} }
Result APT_GetLockHandle(u16 flags, Handle* lockHandle) Result APT_GetLockHandle(u16 flags, Handle* lockHandle)