From dd22a0cd93780b0a825507a1c91310c3ed008f0e Mon Sep 17 00:00:00 2001 From: PabloMK7 Date: Sun, 23 Jul 2023 17:43:50 +0200 Subject: [PATCH] Fix plugin home menu event notification. --- sysmodules/rosalina/source/plugin/memoryblock.c | 2 +- sysmodules/rosalina/source/plugin/plgloader.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/sysmodules/rosalina/source/plugin/memoryblock.c b/sysmodules/rosalina/source/plugin/memoryblock.c index b541535..8738f1e 100644 --- a/sysmodules/rosalina/source/plugin/memoryblock.c +++ b/sysmodules/rosalina/source/plugin/memoryblock.c @@ -277,5 +277,5 @@ void MemoryBlock__ResetSwapSettings(void) PluginHeader* MemoryBlock__GetMappedPluginHeader() { MemoryBlock *memblock = &PluginLoaderCtx.memblock; - return memblock->isReady ? NULL : (PluginHeader*)memblock->memblock; + return memblock->isReady ? (PluginHeader*)memblock->memblock : NULL; } \ No newline at end of file diff --git a/sysmodules/rosalina/source/plugin/plgloader.c b/sysmodules/rosalina/source/plugin/plgloader.c index 5db5324..52751f7 100644 --- a/sysmodules/rosalina/source/plugin/plgloader.c +++ b/sysmodules/rosalina/source/plugin/plgloader.c @@ -563,7 +563,9 @@ void PluginLoader__HandleKernelEvent(u32 notifId) ctx->pluginIsSwapped = !ctx->pluginIsSwapped; } else { // Needed for compatibility with old plugins that don't expect the PLG_HOME events. - volatile PluginHeader* mappedHeader = PA_FROM_VA_PTR(MemoryBlock__GetMappedPluginHeader()); + // Evades cache by using physical address. + volatile PluginHeader* mappedHeader = MemoryBlock__GetMappedPluginHeader(); + mappedHeader = mappedHeader ? PA_FROM_VA_PTR(mappedHeader) : NULL; bool doNotification = mappedHeader ? mappedHeader->notifyHomeEvent : false; if (ctx->pluginIsHome) {