В настоящее время большинство настольных систем X11 используют менеджер композитинга. . Поэтому я решил создать буфер пикселей вручную, передавая выходные данные на сервер X11 с помощью xcb_put_image. Теперь мне нужен лучший контроль синхронизации с обновлением монитора.
Я думаю использовать расширение XPresent для протокола X11. Стратегия заключается в сокращении энергопотребления. Я хочу:
Код: Выделить всё
1. get an event that signals that compositing manager,
or X11 server has finished syncing with a monitor scanout.
2. do some computations and update pixel buffer.
3. submit pixel buffer to the X server
4. wait/sleep until next event
Если я предоставлю пиксельный буфер с помощью функции XPresentPixmap, будет ли он воспроизводиться хорошо с менеджером по композитингу? Я имею в виду, можно ли пользовательскому приложению использовать эту функцию? Получу ли я правильные события Notify?
Может быть, есть современный способ получать уведомления от X11/менеджера композитинга о представлении изображения в отношении обновления монитора?На данный момент я использую блокирующий epoll, который обрабатывает все события/сообщения/сигналы X11 и тому подобное. Я предпочитаю оставаться с epoll.
Подробнее здесь: https://stackoverflow.com/questions/790 ... ng-manager