LINUX.ORG.RU

История изменений

Исправление PPP328, (текущая версия) :

Смотрите, у вас на экране есть картинка, её отрисовывает Xserver.

Он рисует контролы, мышь, обслуживает все события ввода, перетаскивания окон и прочего.

У Xserver’а есть одно замечательное свойство - когда вы, например, перемещаете одно окно поверх второго перекрывая угол - сервер не отрисовывает оба окна целиком, только ту область, которая видима.

Когда вы вводите текст в поле ввода (которое обслуживается иксами, это важно. Есть еще кастомные контролы, которые может свой фреймворк рисовать), то иксы не перерисовывают всё окно. Зачем? Происходит только перерисовка активного контрола или даже его части.

Это позволяет при пробросе иксов передавать по сети не весь экран N раз в секунду, как делают VNC/rdp/teamviewer, а только сигнал о перерисовке контрола с новыми данными, по сути рендеря картинку у вас на клиенте.

Ваш драйвер, судя по всему ловит именно события redraw, которые имеют свойства x,y,w,h - область перерисовки. Т.е. если вы переместили мышку на 10 пикселей влево - вам прилетит событие перерисовки той области где она была и той области куда она прилетела. Сами по себе по умолчанию окна не перерисовываются - зачем? Это лишнее напряжение процессора и сети (в случае проброса).

Когда рисуются кастомные контролы иксы в этом вообще могут не участвовать напрямую. Они отдали область для отрисовки, дальше программа там сама себе господин. Это же касается мультимедиа контента.

Поэтому смените записывающее устройство, любое другое решение будет костылем и будет работать некорректно.

Меня может поправить @Zubok, возможно я в чём-то не прав.

Исходная версия PPP328, :

Смотрите, у вас на экране есть картинка, её отрисовывает Xserver.

Он рисует контролы, мышь, обслуживает все события ввода, перетаскивания окон и прочего.

У Xserver’а есть одно замечательное свойство - когда вы, например, перемещаете одно окно поверх второго перекрывая угол - сервер не отрисовывает оба окна целиком, только ту область, которая видима.

Когда вы вводите текст в поле ввода (которое обслуживается иксами, это важно. Есть еще кастомные контролы, которые может свой фреймворк рисовать), то иксы не перерисовывают всё окно. Зачем? Происходит только перерисовка активного контрола или даже его части.

Это позволяет при пробросе иксов передавать по сети не весь экран N раз в секунду, как делают VNC/rdp/teamviewer, а только сигнал о перерисовке контрола с новыми данными, по сути рендеря картинку у вас на клиенте.

Ваш драйвер, судя по всему ловит именно события redraw, которые имеют свойства x,y,w,h - область перерисовки. Т.е. если вы переместили мышку на 10 пикселей влево - вам прилетит событие перерисовки той области где она была и той области куда она прилетела. Сами по себе по умолчанию окна не перерисовываются - зачем? Это лишнее напряжение процессора и сети (в случае проброса).

Когда рисуются кастомные контролы иксы в этом вообще могут не участвовать напрямую. Они отдали область для отрисовки, дальше программа там сама себе господин. Это же касается мультимедиа контента.

Поэтому смените записывающее устройство, любое другое решение будет костылем и будет работать некорректно.