Handle Amiibo tag events better

This commit is contained in:
wheremyfoodat 2023-09-09 01:56:39 +03:00
parent cf54fd6d1d
commit 5930a3d843
2 changed files with 17 additions and 1 deletions

View file

@ -72,7 +72,15 @@ public:
// Signals an event, returns true on success or false if the event does not exist
bool signalEvent(Handle e);
private:
void clearEvent(Handle e) {
KernelObject* object = getObject(e, KernelObjectType::Event);
if (object != nullptr) {
object->getData<Event>()->fired = false;
}
}
private:
void signalArbiter(u32 waitingAddress, s32 threadCount);
void sleepThread(s64 ns);
void sleepThreadOnArbiter(u32 waitingAddress);

View file

@ -70,6 +70,14 @@ bool NFCService::loadAmiibo(const std::filesystem::path& path) {
return false;
}
if (tagOutOfRangeEvent.has_value()) {
kernel.clearEvent(tagOutOfRangeEvent.value());
}
if (tagInRangeEvent.has_value()) {
kernel.signalEvent(tagInRangeEvent.value());
}
file.close();
return true;
}