blob: e570b2bea5891d5b2256cebb8c71ada99a076fc2 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#pragma once
#include "syscb/api_syscb.h"
#include <vector>
#include "nu/AutoLock.h"
#include "service/types.h"
#include "nx/nxstring.h"
#include "nswasabi/ServiceName.h"
class SysCallbacks : public api_syscb
{
public:
WASABI_SERVICE_NAME("System Callbacks API");
public:
SysCallbacks();
int WASABICALL SysCallbacks_RegisterCallback(ifc_sysCallback *cb);
int WASABICALL SysCallbacks_UnregisterCallback(ifc_sysCallback *cb);
int WASABICALL SysCallbacks_IssueCallback(GUID eventtype, int msg, intptr_t param1 = 0, intptr_t param2 = 0);
ifc_sysCallback *WASABICALL SysCallbacks_Enum(GUID eventtype, size_t n);
private:
nu::LockGuard callbackGuard;
std::vector<ifc_sysCallback*> callbacks;
std::vector<ifc_sysCallback*> deleteMeAfterCallbacks;
bool inCallback;
volatile int reentry;
};
extern SysCallbacks system_callbacks;
|