aboutsummaryrefslogtreecommitdiffstats
path: root/core/async_event.h
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2023-05-03 16:17:49 +0200
committerSven Gothel <[email protected]>2023-05-03 16:17:49 +0200
commitec167fd05661a5b02dd406c87081f84a0f8dd77d (patch)
tree9c4669e471c9969bda59265381b18d2d416db060 /core/async_event.h
parent0d14d30808cfe7b9e3413353e3eef8a0f201399a (diff)
parentd3875f333fb6abe2f39d82caca329414871ae53b (diff)
Merge branch 'v1.23.1'
Resolved Conflicts: CMakeLists.txt
Diffstat (limited to 'core/async_event.h')
-rw-r--r--core/async_event.h55
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