Что-нибудь требуется, чтобы получить обратный вызов Кварца помимо регистрации для этого? - PullRequest
1 голос
/ 06 июня 2009

Я пытаюсь использовать CGDisplayRegisterReconfigurationCallback для получения событий перенастройки дисплея в Quartz на Mac OS X. Вот очень простой код:

void CB(CGDirectDisplayID display,
        CGDisplayChangeSummaryFlags flags,
        void *userInfo) {
    std::cout << "In callback!" << std::endl;
}

int main (int argc, char * const argv[]) {
    std::cout << CGDisplayRegisterReconfigurationCallback(CB, NULL) << std::endl;
    std::cout << "Registered callback, sleeping..." << std::endl;
    sleep(10000000);
    return 0;
}

Однако обратный вызов не вызывается, когда я подключаю / отключаю мониторы и т. Д. CGDisplayRegisterReconfigurationCallback возвращает успех.

«плохо знаком с os x development» было бы преувеличением моих базовых знаний здесь. Нужно ли создавать что-то вроде кварцевого цикла событий, чтобы заставить работать обратные вызовы?

1 Ответ

0 голосов
/ 04 июля 2010

Вам нужен какой-то цикл выполнения. Стандартное приложение Какао или Углерод имеет это как часть обычной обработки событий. Я предполагаю, что самый простой способ - использовать CFRunLoopRun.

...