Быстрое переключение пользователей скрывает CALayer - PullRequest
6 голосов
/ 09 января 2010

У меня есть приложение какао с графическим интерфейсом, которое автоматически запускается, когда компьютер просыпается из сна Приложение запускается одновременно в нескольких учетных записях пользователей и иногда запускается в учетной записи пользователя, которая не является текущим пользователем, отображаемым на экране (то есть активным пользователем консоли). Вот где возникает проблема.

У меня есть пользовательское представление, которое использует CALayer для отображения композиции из нескольких разных изображений. CALayer NSView содержит два подслоя, из которых один также содержит два подслоя. Когда пользователь запускает приложение в учетной записи активного пользователя, проблем не возникает. Когда приложение запускается автоматическим сценарием в учетной записи неактивного пользователя, пользовательский NSView не рисует ни одного CALayers. Я ввел F-Script в приложение, пока оно не рисовало CALayer, и заметил, что пользовательский NSView layer не содержит никаких sublayers! Обратите внимание, что код настройки слоя содержится в -awakeFromNib пользовательского NSView. Я попытался вызвать -awakeFromNib вручную, когда пользовательский NSView не рисовал, и это решило проблему (хотя он правильно установил sublayers).

Я искал в сети и нашел этот бит информации:

В OS X v.10.4 и новее поток ссылки на отображение автоматически останавливается, если пользователь использует быстрое переключение пользователей. Ссылка на дисплей перезапускается при переключении обратно на первоначального пользователя.

Я знаю, что моя проблема как-то связана с тем, что у пользователя нет ссылки на активный экран («хорошая» ссылка на CGContext?), Но я не получаю никаких сообщений об ошибках и не имею опыта Quartz / Core Animation чтобы указать мне в правильном направлении.

Заранее спасибо за помощь!

...