2012-05-15 4 views
2

В самой последней версии OSX Lion, как вы просыпаете машину от сна дисплея? Это связано с сетевой активностью.Как я могу просыпаться с экрана в режиме OSX 10.7.4?

В 10.7.3 это было возможно с помощью следующего вызова:

IOPMAssertionID id = 0; 
IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep, 
          kIOPMAssertionLevelOn, reason, &id) 

Однако, это не работает в 10.7.4. Что можно сделать вместо этого?

ответ

1

Я еще не протестировал влияние на производительность, ни взаимодействие с самим неработающим таймером, но:

io_registry_entry_t regEntry = IORegistryEntryFromPath(kIOMasterPortDefault, "IOService:/IOResources/IODisplayWrangler"); 
if (regEntry != MACH_PORT_NULL) { 
     IORegistryEntrySetCFProperty(regEntry, CFSTR("IORequestIdle"), kCFBooleanFalse); 
     IOObjectRelease(regEntry); 
} 

работает в 10.7.4, чтобы разбудить экран от холостого хода.

+0

Заметим также, что [какао-DEV вкладчик] (http://www.cocoabuilder.com/archive/cocoa/191807-sleep -display.html # 206374) говорит, что это вызовет панику ядра на машинах PPC. –

0

Как явствует из docs, что путь к «разбудить» дисплей в эти дни:

IOPMAssertionID assertionID2; 
IOPMAssertionDeclareUserActivity(CFSTR("Your reasoning"), 
     kIOPMUserActiveLocal, &assertionID2); 

IOPMAssertionCreateWithName(...) путь от первоначального вопроса только «предотвращает показ собирается спать», если это уже (хотя он работает и может также использоваться для предотвращения его от , идущего, чтобы спать за duration времени).

Пути метод Документов «держать» дисплей на работах примерно таким же, как и IOPMAssertionCreateWithName

IOPMAssertionID m_disableDisplaySleepAssertion;  
IOReturn success2 = IOPMAssertionCreateWithDescription(
    kIOPMAssertionTypePreventUserIdleDisplaySleep, reasonForActivity, NULL, NULL, NULL, 0, NULL, &m_disableDisplaySleepAssertion); 
if (success2 == kIOReturnSuccess) { 
    // screen will stay on, do you work 
    success = IOPMAssertionRelease(m_disableDisplaySleepAssertion); 
} 

Если вы хотите, чтобы «включить его и сохранить его навсегда», то IOPMAssertionDeclareUserActivity следует выше , или просто звоните IOPMAssertionDeclareUserActivity снова и снова.

Вы также можете взывать к утилите caffeinate командной строки, я полагаю :)