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 */
|