2013-04-02 4 views
2

Я создаю приложение для OS X 10.7 и более поздних версий, которое воспроизводит видео. Любой документ можно сделать полноэкранным, используя стандартные полноэкранные команды.Предотвращение сглаживания экрана и отображение сна на OS X

Я хотел бы предотвратить автоматическое сглаживание экрана и отображение сна, пока все документы в моем приложении воспроизводятся.

В идеале, конец (или пауза) всех воспроизводимых видео должен начинаться с полного таймера сна сна - 3-минутная отсрочка сна дисплея не должна заканчиваться через 1 минуту и ​​37 секунд после того, как последнее видео заканчивается просто потому, что что-то было проверка или прерывание таймера каждые 3 минуты.

Я также не хочу отключать отображение сна снаружи. Если моя программа выйдет из строя или принудительно завершена или питание отключилось, настройки режима ожидания пользователя должны оставаться нетронутыми.

Каков наилучший способ гарантировать, что воспроизведение не считается «незанятым», но после завершения воспроизведения дисплей сна после простоя работает правильно?

+0

Вы попробовали AVFoundation и обнаружили, что это не сделало этого для вас? Документы неясны. Было бы ценной информацией знать, пробовали ли вы это или нет. –

+1

@FruityGeek: Да; мой плеер использует AVFoundation. Он не препятствует отображению сна. –

ответ

4

Возьмите подтверждение питания во время воспроизведения с помощью IOPMAssertionCreateWithName() и отпустите его, когда закончите. Ручки питания утверждают unexpected process termination correctly:

Утверждения должны быть выпущены с помощью IOPMAssertionRelease. Однако, даже если они не будут правильно выпущены, утверждения будут автоматически освобождаться, когда процесс завершается, умирает или падает. Разбитый процесс не будет препятствовать незанятому сну бесконечно.