00001 #include "screensaver-osx.h"
00002
00003 #include <CoreServices/CoreServices.h>
00004
00005 class ScreenSaverOSXPrivate
00006 {
00007 public:
00008 static void timerCallback(CFRunLoopTimerRef timer, void *info)
00009 {
00010 (void)timer;
00011 (void)info;
00012 UpdateSystemActivity(OverallAct);
00013 };
00014
00015 CFRunLoopTimerRef m_timer;
00016
00017 friend class ScreenSaverOSX;
00018 };
00019
00020 ScreenSaverOSX::ScreenSaverOSX()
00021 {
00022 d = new ScreenSaverOSXPrivate();
00023 d->m_timer = NULL;
00024 }
00025
00026 ScreenSaverOSX::~ScreenSaverOSX()
00027 {
00028 Restore();
00029 delete d;
00030 }
00031
00032 void ScreenSaverOSX::Disable(void)
00033 {
00034 CFRunLoopTimerContext context = { 0, NULL, NULL, NULL, NULL };
00035 if (!d->m_timer)
00036 {
00037 d->m_timer = CFRunLoopTimerCreate(NULL, CFAbsoluteTimeGetCurrent(),
00038 30, 0, 0,
00039 ScreenSaverOSXPrivate::timerCallback,
00040 &context);
00041 if (d->m_timer)
00042 CFRunLoopAddTimer(CFRunLoopGetCurrent(),
00043 d->m_timer,
00044 kCFRunLoopCommonModes);
00045 }
00046 }
00047
00048 void ScreenSaverOSX::Restore(void)
00049 {
00050 if (d->m_timer)
00051 {
00052 CFRunLoopTimerInvalidate(d->m_timer);
00053 CFRelease(d->m_timer);
00054 d->m_timer = NULL;
00055 }
00056 }
00057
00058 void ScreenSaverOSX::Reset(void)
00059 {
00060
00061 ScreenSaverOSXPrivate::timerCallback(NULL, NULL);
00062 }
00063
00064 bool ScreenSaverOSX::Asleep(void)
00065 {
00066 return 0;
00067 }
00068