#include "SwifTools/Idle/MacOSXIdleQuerier.h" #include #include #include namespace Swift { MacOSXIdleQuerier::MacOSXIdleQuerier() : ioService(NULL) { mach_port_t masterPort; IOMasterPort(MACH_PORT_NULL, &masterPort); ioService = IOServiceGetMatchingService(masterPort, IOServiceMatching("IOHIDSystem")); assert(ioService); } int MacOSXIdleQuerier::getIdleTimeSeconds() { CFTypeRef property = IORegistryEntryCreateCFProperty(ioService, CFSTR("HIDIdleTime"), kCFAllocatorDefault, 0); uint64_t idle = 0; bool result = CFNumberGetValue((CFNumberRef)property, kCFNumberSInt64Type, &idle); assert(result); CFRelease(property); return idle / 1000000000; } }