Конфигурирование дисплеев Используя транзакцию

Quartz Display Services позволяет сконфигурировать ряд дисплеев в единственной транзакции. Во время выполнения изменений конфигурации Кварц выполняет стандарт, исчезают эффект на все онлайновые дисплеи. Дисплеи исчезают к монохроматическому цвету, конфигурация имеет место, и дисплеи возвращаются к нормальному. Для получения дополнительной информации об исчезают эффекты, видят Используя, Исчезают Эффекты.

Вы начинаете новую транзакцию путем вызова CGBeginDisplayConfiguration. Следующий шаг должен объявить то, что изменяется, Вы хотите сделать. Например, можно использовать эти функции:

После того, как Вы будете закончены, подготавливая транзакцию, Вы вызываете CGCompleteDisplayConfiguration выполнить его. В этом вызове Вы также указываете объем изменения конфигурации. Как правило, Вы указываете kCGConfigureForAppOnly применять изменения для времени жизни Вашего приложения.

Перечисление 1 показывает, как использовать транзакцию конфигурации с пользовательским, исчезают эффект изменить режим отображения единственного дисплея для OS X v10.6 и позже. Для OS X v10.5 или ранее, см. Перечисление 2 вместо этого. Подробное объяснение каждой пронумерованной строки кода появляется после списков.

Перечисление 1  простая транзакция конфигурации (OS X v10.6 или позже)

void MyDisplaySwitchToMode (CGDirectDisplayID display, CGDisplayModeRef mode)
{
    CGDisplayConfigRef config; // 1
    CGBeginDisplayConfiguration (&config); // 2
    CGConfigureDisplayWithDisplayMode (config, display, mode, NULL); // 3
 
    CGConfigureDisplayFadeEffect ( // 4
        config,
        0.6,    // fade out interval in seconds
        1.0,    // fade in interval
        0.5,    // red
        0.5,    // green
        0.5     // blue
    );
 
    CGCompleteDisplayConfiguration (config, kCGConfigureForAppOnly); // 5
}

Перечисление 2  простая транзакция конфигурации (OS X v 10.5)

void MyDisplaySwitchToMode (CGDirectDisplayID display, CFDictionaryRef mode)
{
    CGDisplayConfigRef config; // 1
    CGBeginDisplayConfiguration (&config); // 2
    CGConfigureDisplayMode (config, display, mode); // 3
 
    CGConfigureDisplayFadeEffect ( // 4
        config,
        0.6,    // fade out interval in seconds
        1.0,    // fade in interval
        0.5,    // red
        0.5,    // green
        0.5     // blue
    );
 
    CGCompleteDisplayConfiguration (config, kCGConfigureForAppOnly); // 5
}

Вот то, что делает код:

  1. Объявляет объект конфигурации дисплея, переменная, обеспечивающая контекст для ряда изменений конфигурации дисплея.

  2. Начинает новую транзакцию конфигурации и пасует назад объект конфигурации дисплея.

  3. Объявляет изменение режима отображения для этой конфигурации.

  4. Настраивает значение по умолчанию, исчезают эффект для этой конфигурации. Новые исчезают, цвет является серым.

  5. Применяет новую конфигурацию с областью действия приложения. По возврату объект конфигурации больше не действителен.