Мне необходимо написать очень эффективное приложение, которое будет отражать содержимое произвольного внешнего приложения несколько раз (много раз) в области моего окна, для Linux. На Windows я обычно делал это с помощью DwmRegisterThumbnail
, который сообщал бы композитору (диспетчеру окон рабочего стола), что я хочу, чтобы он нарисовал миниатюру этого чужого окна, которое он в любом случае генерирует, на прямоугольник в моем собственном окне, когда он составляет изображение рабочего стола, которое будет отображаться пользователю на мониторе. Я думаю, это один из самых низких способов достижения моей цели на Windows. Цель состоит в том, чтобы оказать минимальное влияние на процессор, так как приложение будет работать на довольно ограниченной машине. Я никогда не проверял это с помощью методов копирования данных экрана с помощью GDI или DirectX, но я не верю, что это быстрее. Или, может быть, я ошибаюсь, поправьте меня, если да, пожалуйста. Есть ли другой способ быстрее на Windows? Ограничения этого метода включают в себя невозможность прикоснуться к фактическим данным изображения, поэтому, к примеру, нельзя рисовать поверх них, что вполне подходит для моей цели.
Теперь мой вопрос: что будет лучшим подход к достижению этого на Linux? У меня есть полная свобода выбора подходящего X-сервера, диспетчера отображения, если это необходимо, и я также могу написать любое программное обеспечение, чтобы сделать его таким же дешевым, как на Windows. Есть ли API, аналогичный API на Windows для некоторых Linux композиторов, таких как Mutter или KWin, который работает хорошо? Или я должен подключиться к X и скопировать данные изображения с него? Будет ли это есть много процессора?
Какой у вас опыт и мнение? Как мне принять это?
Большое спасибо.