mirror of https://github.com/axmolengine/axmol.git
43 lines
917 B
C
43 lines
917 B
C
|
#ifndef ALC_EVENTS_H
|
||
|
#define ALC_EVENTS_H
|
||
|
|
||
|
#include "inprogext.h"
|
||
|
#include "opthelpers.h"
|
||
|
|
||
|
#include <bitset>
|
||
|
#include <mutex>
|
||
|
#include <string_view>
|
||
|
|
||
|
|
||
|
namespace alc {
|
||
|
|
||
|
enum class EventType : uint8_t {
|
||
|
DefaultDeviceChanged,
|
||
|
DeviceAdded,
|
||
|
DeviceRemoved,
|
||
|
|
||
|
Count
|
||
|
};
|
||
|
|
||
|
enum class DeviceType : ALCenum {
|
||
|
Playback = ALC_PLAYBACK_DEVICE_SOFT,
|
||
|
Capture = ALC_CAPTURE_DEVICE_SOFT,
|
||
|
};
|
||
|
|
||
|
using EventBitSet = std::bitset<al::to_underlying(EventType::Count)>;
|
||
|
inline EventBitSet EventsEnabled{0};
|
||
|
|
||
|
inline std::mutex EventMutex;
|
||
|
|
||
|
inline ALCEVENTPROCTYPESOFT EventCallback{};
|
||
|
inline void *EventUserPtr{};
|
||
|
|
||
|
void Event(EventType eventType, DeviceType deviceType, ALCdevice *device, std::string_view message) noexcept;
|
||
|
|
||
|
inline void Event(EventType eventType, DeviceType deviceType, std::string_view message) noexcept
|
||
|
{ Event(eventType, deviceType, nullptr, message); }
|
||
|
|
||
|
} // namespace alc
|
||
|
|
||
|
#endif /* ALC_EVENTS_H */
|