mirror of
https://github.com/wiiu-env/homebrew_on_menu_plugin.git
synced 2024-11-25 20:06:53 +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/wiiupluginsystem:20220123 /artifacts $DEVKITPRO
|
||||||
COPY --from=wiiuenv/librpxloader:20220212 /artifacts $DEVKITPRO
|
COPY --from=wiiuenv/librpxloader:20220212 /artifacts $DEVKITPRO
|
||||||
|
COPY --from=wiiuenv/libsdutils:20220303 /artifacts $DEVKITPRO
|
||||||
|
|
||||||
WORKDIR project
|
WORKDIR project
|
4
Makefile
4
Makefile
@ -36,7 +36,7 @@ CFLAGS := -Wall -O2 -ffunction-sections \
|
|||||||
|
|
||||||
CFLAGS += $(INCLUDE) -D__WIIU__ -D__WUT__ -D__WUPS__
|
CFLAGS += $(INCLUDE) -D__WIIU__ -D__WUT__ -D__WUPS__
|
||||||
|
|
||||||
CXXFLAGS := $(CFLAGS)
|
CXXFLAGS := $(CFLAGS) -fno-exceptions -fno-rtti
|
||||||
|
|
||||||
ASFLAGS := -g $(ARCH)
|
ASFLAGS := -g $(ARCH)
|
||||||
LDFLAGS = -g $(ARCH) $(RPXSPECS) -Wl,-Map,$(notdir $*.map) -T$(WUMS_ROOT)/share/librpxloader.ld $(WUPSSPECS)
|
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
|
CFLAGS += -DDEBUG -g
|
||||||
endif
|
endif
|
||||||
|
|
||||||
LIBS := -lwups -lwut -lrpxloader
|
LIBS := -lwups -lwut -lrpxloader -lsdutils
|
||||||
|
|
||||||
#-------------------------------------------------------------------------------
|
#-------------------------------------------------------------------------------
|
||||||
# list of directories containing libraries, this must be the top level
|
# list of directories containing libraries, this must be the top level
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
bool gInWiiUMenu __attribute__((section(".data")));
|
bool gInWiiUMenu __attribute__((section(".data")));
|
||||||
|
|
||||||
static FSStatus CallWithNewPath(const char *oldPath, const std::function<FSStatus(const char *)> &callFunctionWithPath) {
|
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);
|
return callFunctionWithPath(oldPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
|
|
||||||
extern bool gInWiiUMenu;
|
extern bool gInWiiUMenu;
|
||||||
|
extern bool sSDIsMounted;
|
||||||
|
|
||||||
#define SAVE_REPLACEMENT_PATH "/vol/external01/wiiu/homebrew_on_menu_plugin"
|
#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 "FileWrapper.h"
|
||||||
|
#include "SaveRedirection.h"
|
||||||
#include "fileinfos.h"
|
#include "fileinfos.h"
|
||||||
#include "filelist.h"
|
#include "filelist.h"
|
||||||
#include "fs/FSUtils.h"
|
#include "fs/FSUtils.h"
|
||||||
@ -16,6 +17,7 @@
|
|||||||
#include <malloc.h>
|
#include <malloc.h>
|
||||||
#include <nn/acp.h>
|
#include <nn/acp.h>
|
||||||
#include <rpxloader.h>
|
#include <rpxloader.h>
|
||||||
|
#include <sdutils/sdutils.h>
|
||||||
#include <sysapp/title.h>
|
#include <sysapp/title.h>
|
||||||
#include <utils/logger.h>
|
#include <utils/logger.h>
|
||||||
#include <wups.h>
|
#include <wups.h>
|
||||||
@ -58,13 +60,34 @@ INITIALIZE_PLUGIN() {
|
|||||||
OSInitMutex(&fileinfoMutex);
|
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() {
|
ON_APPLICATION_START() {
|
||||||
initLogging();
|
initLogging();
|
||||||
|
|
||||||
if (OSGetTitleID() == 0x0005001010040000L || // Wii U Menu JPN
|
if (OSGetTitleID() == 0x0005001010040000L || // Wii U Menu JPN
|
||||||
OSGetTitleID() == 0x0005001010040100L || // Wii U Menu USA
|
OSGetTitleID() == 0x0005001010040100L || // Wii U Menu USA
|
||||||
OSGetTitleID() == 0x0005001010040200L) { // Wii U Menu ERU
|
OSGetTitleID() == 0x0005001010040200L) { // Wii U Menu EUR
|
||||||
readCustomTitlesFromSD();
|
|
||||||
|
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()) {
|
if (_SYSGetSystemApplicationTitleId(SYSTEM_APP_ID_HEALTH_AND_SAFETY) != OSGetTitleID()) {
|
||||||
@ -75,8 +98,16 @@ ON_APPLICATION_START() {
|
|||||||
|
|
||||||
ON_APPLICATION_ENDS() {
|
ON_APPLICATION_ENDS() {
|
||||||
unmountAllRomfs();
|
unmountAllRomfs();
|
||||||
|
memset((void *) &gFileInfos, 0, sizeof(gFileInfos));
|
||||||
FileHandleWrapper_FreeAll();
|
FileHandleWrapper_FreeAll();
|
||||||
deinitLogging();
|
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) {
|
void fillXmlForTitleID(uint32_t titleid_upper, uint32_t titleid_lower, ACPMetaXml *out_buf) {
|
||||||
|
Loading…
Reference in New Issue
Block a user