Handle Amiibo tag events better
This commit is contained in:
@@ -72,7 +72,15 @@ public:
|
|||||||
|
|
||||||
// Signals an event, returns true on success or false if the event does not exist
|
// Signals an event, returns true on success or false if the event does not exist
|
||||||
bool signalEvent(Handle e);
|
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 signalArbiter(u32 waitingAddress, s32 threadCount);
|
||||||
void sleepThread(s64 ns);
|
void sleepThread(s64 ns);
|
||||||
void sleepThreadOnArbiter(u32 waitingAddress);
|
void sleepThreadOnArbiter(u32 waitingAddress);
|
||||||
|
|||||||
@@ -70,6 +70,14 @@ bool NFCService::loadAmiibo(const std::filesystem::path& path) {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (tagOutOfRangeEvent.has_value()) {
|
||||||
|
kernel.clearEvent(tagOutOfRangeEvent.value());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tagInRangeEvent.has_value()) {
|
||||||
|
kernel.signalEvent(tagInRangeEvent.value());
|
||||||
|
}
|
||||||
|
|
||||||
file.close();
|
file.close();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user