diff options
Diffstat (limited to 'core/async_event.h')
-rw-r--r-- | core/async_event.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/core/async_event.h b/core/async_event.h new file mode 100644 index 00000000..5a2f5f91 --- /dev/null +++ b/core/async_event.h @@ -0,0 +1,55 @@ +#ifndef CORE_EVENT_H +#define CORE_EVENT_H + +#include "almalloc.h" + +struct EffectState; + +using uint = unsigned int; + + +struct AsyncEvent { + enum : uint { + /* User event types. */ + SourceStateChange, + BufferCompleted, + Disconnected, + UserEventCount, + + /* Internal events, always processed. */ + ReleaseEffectState = 128, + + /* End event thread processing. */ + KillThread, + }; + + enum class SrcState { + Reset, + Stop, + Play, + Pause + }; + + const uint EnumType; + union { + char dummy; + struct { + uint id; + SrcState state; + } srcstate; + struct { + uint id; + uint count; + } bufcomp; + struct { + char msg[244]; + } disconnect; + EffectState *mEffectState; + } u{}; + + constexpr AsyncEvent(uint type) noexcept : EnumType{type} { } + + DISABLE_ALLOC() +}; + +#endif |