aboutsummaryrefslogtreecommitdiffstats
path: root/LibOVR/Src/Displays/OVR_OSX_FocusObserver.h
blob: 66ed12f944611ea2f920d64429eb9c0baba30ee9 (plain)
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#ifndef OVR_OSX_FocusObserver_h
#define OVR_OSX_FocusObserver_h

#include "../Kernel/OVR_Threads.h"
#include "../Kernel/OVR_System.h"
#include "../Kernel/OVR_Lockless.h"

#include "../Service/Service_NetServer.h"

namespace OVR { namespace OSX{

    struct FocusReaderImpl;
    
class AppFocusObserver : public SystemSingletonBase<AppFocusObserver>    
{
    OVR_DECLARE_SINGLETON(AppFocusObserver);
    
public:
    Lock ListLock;
    Array<pid_t> AppList;
    Service::NetServerListener *listener;
    FocusReaderImpl* impl;
    
    void OnProcessFocus(pid_t pid);
    void SetListener(Service::NetServerListener *_listener);
    
    pid_t LastProcessId;
    pid_t ActiveProcessId;
    void AddProcess(pid_t pid);
    void nextProcess();
    void RemoveProcess(pid_t pid);
    
    
protected:
    void onAppFocus(pid_t pid);
    
    pid_t LastAppFocus;
    
};
    
    
 
}} // namespace OVR, OSX


#endif /* defined(__OVR_OSX_FocusReader__OVR_OSX_FocusObserver__) */