mirror of
https://github.com/wiiu-env/WiiUPluginLoaderBackend.git
synced 2025-02-16 20:09:12 +01:00
Added WUPSConfigAPI_IsMenuOpen()
to allow plugins to check if the menu is open.
This commit is contained in:
parent
5893ac2f18
commit
90848971ad
@ -311,7 +311,12 @@ namespace WUPSConfigAPIBackend {
|
||||
return WUPSCONFIG_API_RESULT_SUCCESS;
|
||||
}
|
||||
|
||||
BOOL WUPSConfigAPI_IsMenuOpen(void) {
|
||||
return gConfigMenuOpened;
|
||||
}
|
||||
|
||||
WUMS_EXPORT_FUNCTION(WUPSConfigAPI_GetVersion);
|
||||
WUMS_EXPORT_FUNCTION(WUPSConfigAPI_IsMenuOpen);
|
||||
|
||||
WUMS_EXPORT_FUNCTION_EX(WUPSConfigAPIBackend::InitEx, WUPSConfigAPI_InitEx);
|
||||
WUMS_EXPORT_FUNCTION_EX(WUPSConfigAPIBackend::Category::Create, WUPSConfigAPI_Category_CreateEx);
|
||||
|
@ -16,4 +16,6 @@ bool gNotificationModuleLoaded = false;
|
||||
|
||||
OSThread *gOnlyAcceptFromThread = nullptr;
|
||||
|
||||
bool gConfigMenuShouldClose = false;
|
||||
bool gConfigMenuShouldClose = false;
|
||||
|
||||
bool gConfigMenuOpened = false;
|
||||
|
@ -29,4 +29,6 @@ extern bool gNotificationModuleLoaded;
|
||||
|
||||
extern OSThread *gOnlyAcceptFromThread;
|
||||
|
||||
extern bool gConfigMenuShouldClose;
|
||||
extern bool gConfigMenuShouldClose;
|
||||
|
||||
extern bool gConfigMenuOpened;
|
||||
|
@ -8,16 +8,15 @@
|
||||
#include "../hooks.h"
|
||||
|
||||
static uint8_t sVpadPressCooldown = 0xFF;
|
||||
static bool sConfigMenuOpened = false;
|
||||
static bool sWantsToOpenConfigMenu = false;
|
||||
|
||||
DECL_FUNCTION(void, GX2SwapScanBuffers, void) {
|
||||
real_GX2SwapScanBuffers();
|
||||
|
||||
if (sWantsToOpenConfigMenu && !sConfigMenuOpened) {
|
||||
sConfigMenuOpened = true;
|
||||
if (sWantsToOpenConfigMenu && !gConfigMenuOpened) {
|
||||
gConfigMenuOpened = true;
|
||||
ConfigUtils::openConfigMenu();
|
||||
sConfigMenuOpened = false;
|
||||
gConfigMenuOpened = false;
|
||||
sWantsToOpenConfigMenu = false;
|
||||
}
|
||||
}
|
||||
@ -46,7 +45,7 @@ static uint32_t lastData0 = 0;
|
||||
|
||||
|
||||
DECL_FUNCTION(BOOL, OSSendMessage, OSMessageQueue *queue, OSMessage *message, OSMessageFlags flags) {
|
||||
if (sConfigMenuOpened && queue == OSGetSystemMessageQueue()) {
|
||||
if (gConfigMenuOpened && queue == OSGetSystemMessageQueue()) {
|
||||
if (message != nullptr) {
|
||||
if (message->args[0] == 0xfacebacc) { // Release foreground
|
||||
gConfigMenuShouldClose = true;
|
||||
@ -81,7 +80,7 @@ DECL_FUNCTION(void, OSReleaseForeground) {
|
||||
}
|
||||
|
||||
DECL_FUNCTION(int32_t, VPADRead, int32_t chan, VPADStatus *buffer, uint32_t buffer_size, VPADReadError *error) {
|
||||
if (sConfigMenuOpened) {
|
||||
if (gConfigMenuOpened) {
|
||||
// Ignore reading vpad input only from other threads if the config menu is opened
|
||||
if (OSGetCurrentThread() != gOnlyAcceptFromThread) {
|
||||
return 0;
|
||||
@ -90,7 +89,7 @@ DECL_FUNCTION(int32_t, VPADRead, int32_t chan, VPADStatus *buffer, uint32_t buff
|
||||
VPADReadError real_error = VPAD_READ_SUCCESS;
|
||||
int32_t result = real_VPADRead(chan, buffer, buffer_size, &real_error);
|
||||
|
||||
if (result > 0 && real_error == VPAD_READ_SUCCESS && buffer && ((buffer[0].hold & 0xFFFFF) == (VPAD_BUTTON_L | VPAD_BUTTON_DOWN | VPAD_BUTTON_MINUS)) && sVpadPressCooldown == 0 && !sConfigMenuOpened) {
|
||||
if (result > 0 && real_error == VPAD_READ_SUCCESS && buffer && ((buffer[0].hold & 0xFFFFF) == (VPAD_BUTTON_L | VPAD_BUTTON_DOWN | VPAD_BUTTON_MINUS)) && sVpadPressCooldown == 0 && !gConfigMenuOpened) {
|
||||
|
||||
sWantsToOpenConfigMenu = true;
|
||||
sVpadPressCooldown = 0x3C;
|
||||
@ -109,7 +108,7 @@ DECL_FUNCTION(int32_t, VPADRead, int32_t chan, VPADStatus *buffer, uint32_t buff
|
||||
DECL_FUNCTION(void, WPADRead, WPADChan chan, WPADStatusProController *data) {
|
||||
real_WPADRead(chan, data);
|
||||
|
||||
if (!sConfigMenuOpened && data && data[0].err == 0) {
|
||||
if (!gConfigMenuOpened && data && data[0].err == 0) {
|
||||
if (data[0].extensionType != 0xFF) {
|
||||
if (data[0].extensionType == WPAD_EXT_CORE || data[0].extensionType == WPAD_EXT_NUNCHUK ||
|
||||
data[0].extensionType == WPAD_EXT_MPLUS || data[0].extensionType == WPAD_EXT_MPLUS_NUNCHUK) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user