mirror of
https://github.com/wiiu-env/homebrew_on_menu_plugin.git
synced 2024-11-22 10:39:16 +01:00
Reload the Wii U Menu when a sd card was inserted or ejected
This commit is contained in:
parent
509bcc2060
commit
614729f9e6
@ -2,5 +2,6 @@ FROM wiiuenv/devkitppc:20220303
|
||||
|
||||
COPY --from=wiiuenv/wiiupluginsystem:20220123 /artifacts $DEVKITPRO
|
||||
COPY --from=wiiuenv/librpxloader:20220212 /artifacts $DEVKITPRO
|
||||
COPY --from=wiiuenv/libsdutils:20220303 /artifacts $DEVKITPRO
|
||||
|
||||
WORKDIR project
|
4
Makefile
4
Makefile
@ -36,7 +36,7 @@ CFLAGS := -Wall -O2 -ffunction-sections \
|
||||
|
||||
CFLAGS += $(INCLUDE) -D__WIIU__ -D__WUT__ -D__WUPS__
|
||||
|
||||
CXXFLAGS := $(CFLAGS)
|
||||
CXXFLAGS := $(CFLAGS) -fno-exceptions -fno-rtti
|
||||
|
||||
ASFLAGS := -g $(ARCH)
|
||||
LDFLAGS = -g $(ARCH) $(RPXSPECS) -Wl,-Map,$(notdir $*.map) -T$(WUMS_ROOT)/share/librpxloader.ld $(WUPSSPECS)
|
||||
@ -46,7 +46,7 @@ CXXFLAGS += -DDEBUG -g
|
||||
CFLAGS += -DDEBUG -g
|
||||
endif
|
||||
|
||||
LIBS := -lwups -lwut -lrpxloader
|
||||
LIBS := -lwups -lwut -lrpxloader -lsdutils
|
||||
|
||||
#-------------------------------------------------------------------------------
|
||||
# list of directories containing libraries, this must be the top level
|
||||
|
@ -13,7 +13,7 @@
|
||||
bool gInWiiUMenu __attribute__((section(".data")));
|
||||
|
||||
static FSStatus CallWithNewPath(const char *oldPath, const std::function<FSStatus(const char *)> &callFunctionWithPath) {
|
||||
if (!gInWiiUMenu || strncmp(oldPath, "/vol/save/", 10) != 0) {
|
||||
if (!sSDIsMounted || !gInWiiUMenu || strncmp(oldPath, "/vol/save/", 10) != 0) {
|
||||
return callFunctionWithPath(oldPath);
|
||||
}
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
#include <stdbool.h>
|
||||
|
||||
extern bool gInWiiUMenu;
|
||||
extern bool sSDIsMounted;
|
||||
|
||||
#define SAVE_REPLACEMENT_PATH "/vol/external01/wiiu/homebrew_on_menu_plugin"
|
||||
|
||||
|
35
src/main.cpp
35
src/main.cpp
@ -1,4 +1,5 @@
|
||||
#include "FileWrapper.h"
|
||||
#include "SaveRedirection.h"
|
||||
#include "fileinfos.h"
|
||||
#include "filelist.h"
|
||||
#include "fs/FSUtils.h"
|
||||
@ -16,6 +17,7 @@
|
||||
#include <malloc.h>
|
||||
#include <nn/acp.h>
|
||||
#include <rpxloader.h>
|
||||
#include <sdutils/sdutils.h>
|
||||
#include <sysapp/title.h>
|
||||
#include <utils/logger.h>
|
||||
#include <wups.h>
|
||||
@ -58,13 +60,34 @@ INITIALIZE_PLUGIN() {
|
||||
OSInitMutex(&fileinfoMutex);
|
||||
}
|
||||
|
||||
bool sSDUtilsInitDone = false;
|
||||
bool sSDIsMounted = false;
|
||||
bool sTitleRebooting = false;
|
||||
|
||||
void SDAttachedHandler(SDUtilsAttachStatus status) {
|
||||
if (!sTitleRebooting) {
|
||||
_SYSLaunchTitleWithStdArgsInNoSplash(OSGetTitleID(), 0);
|
||||
sTitleRebooting = true;
|
||||
}
|
||||
}
|
||||
|
||||
ON_APPLICATION_START() {
|
||||
initLogging();
|
||||
|
||||
if (OSGetTitleID() == 0x0005001010040000L || // Wii U Menu JPN
|
||||
OSGetTitleID() == 0x0005001010040100L || // Wii U Menu USA
|
||||
OSGetTitleID() == 0x0005001010040200L) { // Wii U Menu ERU
|
||||
readCustomTitlesFromSD();
|
||||
OSGetTitleID() == 0x0005001010040200L) { // Wii U Menu EUR
|
||||
|
||||
if (SDUtils_Init() >= 0) {
|
||||
sSDUtilsInitDone = true;
|
||||
sTitleRebooting = false;
|
||||
SDUtils_AddAttachHandler(SDAttachedHandler);
|
||||
}
|
||||
if (SDUtils_IsSdCardMounted(&sSDIsMounted) >= 0 && sSDIsMounted) {
|
||||
readCustomTitlesFromSD();
|
||||
}
|
||||
} else {
|
||||
gInWiiUMenu = false;
|
||||
}
|
||||
|
||||
if (_SYSGetSystemApplicationTitleId(SYSTEM_APP_ID_HEALTH_AND_SAFETY) != OSGetTitleID()) {
|
||||
@ -75,8 +98,16 @@ ON_APPLICATION_START() {
|
||||
|
||||
ON_APPLICATION_ENDS() {
|
||||
unmountAllRomfs();
|
||||
memset((void *) &gFileInfos, 0, sizeof(gFileInfos));
|
||||
FileHandleWrapper_FreeAll();
|
||||
deinitLogging();
|
||||
gInWiiUMenu = false;
|
||||
if (sSDUtilsInitDone) {
|
||||
SDUtils_RemoveAttachHandler(SDAttachedHandler);
|
||||
SDUtils_DeInit();
|
||||
sSDUtilsInitDone = false;
|
||||
}
|
||||
sSDIsMounted = false;
|
||||
}
|
||||
|
||||
void fillXmlForTitleID(uint32_t titleid_upper, uint32_t titleid_lower, ACPMetaXml *out_buf) {
|
||||
|
Loading…
Reference in New Issue
Block a user