Add ButtonComboAPI support

This commit is contained in:
Maschell
2024-12-18 16:11:14 +01:00
parent 6565585d18
commit cd92e47b9d
18 changed files with 1028 additions and 45 deletions

View File

@@ -12,6 +12,7 @@
#include "utils/utils.h"
#include "version.h"
#include <buttoncombo/manager.h>
#include <coreinit/debug.h>
#include <notifications/notifications.h>
#include <ranges>
@@ -32,6 +33,10 @@ WUMS_INITIALIZE() {
OSFatal("homebrew_wupsbackend: FunctionPatcher_InitLibrary failed");
}
if (ButtonComboModule_InitLibrary() != BUTTON_COMBO_MODULE_ERROR_SUCCESS) {
OSFatal("homebrew_wupsbackend: ButtonComboModule_InitLibrary failed");
}
if (const NotificationModuleStatus res = NotificationModule_InitLibrary(); res != NOTIFICATION_MODULE_RESULT_SUCCESS) {
DEBUG_FUNCTION_LINE_ERR("Failed to init NotificationModule: %s (%d)", NotificationModule_GetStatusStr(res), res);
gNotificationModuleLoaded = false;
@@ -207,14 +212,6 @@ WUMS_APPLICATION_STARTS() {
std::vector<PluginContainer> pluginsToDeinit = std::move(gLoadedPlugins);
gLoadedPlugins = std::move(pluginsToKeep);
for (const auto &p : pluginsToKeep) {
DEBUG_FUNCTION_LINE_INFO("KEEP: %s", p.getMetaInformation().getName().c_str());
}
for (const auto &p : pluginsToDeinit) {
DEBUG_FUNCTION_LINE_ERR("DEINIT: %s", p.getMetaInformation().getName().c_str());
}
DEBUG_FUNCTION_LINE("Deinit unused plugins");
CleanupPlugins(std::move(pluginsToDeinit));
@@ -255,6 +252,7 @@ WUMS_APPLICATION_STARTS() {
if (const WUPSStorageError err = plugin.OpenStorage(); err != WUPS_STORAGE_ERROR_SUCCESS) {
DEBUG_FUNCTION_LINE_ERR("Failed to open storage for plugin: %s. (%s)", plugin.getMetaInformation().getName().c_str(), WUPSStorageAPI_GetStatusStr(err));
}
plugin.InitButtonComboData();
}
PluginManagement::callInitHooks(gLoadedPlugins, needsInitsCheck);
@@ -287,9 +285,11 @@ void CleanupPlugins(std::vector<PluginContainer> &&pluginsToDeinit) {
PluginManagement::RestoreFunctionPatches(pluginsToDeinit);
for (auto &plugin : pluginsToDeinit) {
if (!plugin.isInitDone()) { continue; }
if (const WUPSStorageError err = plugin.CloseStorage(); err != WUPS_STORAGE_ERROR_SUCCESS) {
DEBUG_FUNCTION_LINE_ERR("Failed to close storage for plugin: %s", plugin.getMetaInformation().getName().c_str());
}
plugin.DeinitButtonComboData();
}
for (const auto &pluginContainer : pluginsToDeinit) {