mirror of
https://github.com/zeldaret/botw
synced 2026-07-11 14:38:41 -04:00
23ec19806c
Missed it because of IDA's function tail mechanism...
55 lines
1.3 KiB
C++
55 lines
1.3 KiB
C++
#include "KingSystem/Utils/Thread/Event.h"
|
|
|
|
namespace ksys::util {
|
|
|
|
Event::Event() = default;
|
|
|
|
Event::Event(sead::Heap* disposer_heap) : mEvent(disposer_heap) {}
|
|
|
|
Event::Event(bool manual_reset) : mManualReset(manual_reset), mEvent(manual_reset) {}
|
|
|
|
Event::Event(sead::Heap* disposer_heap, bool manual_reset)
|
|
: mManualReset(manual_reset), mEvent(disposer_heap, manual_reset) {}
|
|
|
|
Event::Event(sead::Heap* disposer_heap, sead::IDisposer::HeapNullOption heap_null_option,
|
|
bool manual_reset)
|
|
: mManualReset(manual_reset), mEvent(disposer_heap, heap_null_option, manual_reset) {}
|
|
|
|
Event::~Event() = default;
|
|
|
|
void Event::initialize(bool manual_reset) {
|
|
mManualReset = manual_reset;
|
|
mEvent.initialize(manual_reset);
|
|
}
|
|
|
|
void Event::wait() {
|
|
if (!mSignalSet || !mManualReset)
|
|
mEvent.wait();
|
|
}
|
|
|
|
bool Event::wait(sead::TickSpan duration) {
|
|
return (mSignalSet && mManualReset) || mEvent.wait(duration);
|
|
}
|
|
|
|
void Event::setSignal() {
|
|
if (mSignalSet == 1 && mManualReset)
|
|
return;
|
|
|
|
mSignalSet.exchange(1);
|
|
mEvent.setSignal();
|
|
}
|
|
|
|
void Event::resetSignal() {
|
|
if (!mSignalSet && mManualReset)
|
|
return;
|
|
|
|
mEvent.resetSignal();
|
|
mSignalSet.exchange(0);
|
|
}
|
|
|
|
bool Event::isSignalSet() const {
|
|
return mSignalSet == 1;
|
|
}
|
|
|
|
} // namespace ksys::util
|