У меня есть приложение какао с графическим интерфейсом, которое автоматически запускается, когда компьютер просыпается из сна Приложение запускается одновременно в нескольких учетных записях пользователей и иногда запускается в учетной записи пользователя, которая не является текущим пользователем, отображаемым на экране (то есть активным пользователем консоли). Вот где возникает проблема.
У меня есть пользовательское представление, которое использует 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 чтобы указать мне в правильном направлении.
Заранее спасибо за помощь!