summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2009-11-24 18:58:29 (GMT)
committerRemko Tronçon <git@el-tramo.be>2009-11-24 18:58:29 (GMT)
commit3e2e0d3785d4527799441540addeee228f7f8359 (patch)
treecb936b0771edbbd8926d6f966d257e46eadcda81 /SwifTools/Idle/MacOSXIdleQuerier.cpp
parentc7fb528f0d80f9d96a2d84444352386d5d4288dc (diff)
downloadswift-3e2e0d3785d4527799441540addeee228f7f8359.zip
swift-3e2e0d3785d4527799441540addeee228f7f8359.tar.bz2
Added MacOSX Idle querier.
Diffstat (limited to 'SwifTools/Idle/MacOSXIdleQuerier.cpp')
-rw-r--r--SwifTools/Idle/MacOSXIdleQuerier.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/SwifTools/Idle/MacOSXIdleQuerier.cpp b/SwifTools/Idle/MacOSXIdleQuerier.cpp
new file mode 100644
index 0000000..ac6dff9
--- /dev/null
+++ b/SwifTools/Idle/MacOSXIdleQuerier.cpp
@@ -0,0 +1,25 @@
+#include "SwifTools/Idle/MacOSXIdleQuerier.h"
+
+#include <cassert>
+#include <iostream>
+#include <CoreFoundation/CoreFoundation.h>
+
+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;
+}
+
+}