LINUX.ORG.RU

Окна мерцают при перерисовке/изменении размера

 


0

1

Привет.

Четвертый год на разном железе наблюдаю одинаковую проблему - при установленной тёмной теме оформления окна моргают при перерисовке и изменении размера. На белой тоже, но это менее заметно.

WM: Metacity, XFWM4, Gala DE: Pantheon, XFCE, MATE Видео: Intel HD 2000/4000, Intel GMA 950, Nvidia 8600, остальное не вспомню. Дистрибутивы: Gentoo, ElementaryOS, Fedora 20/21/22, Ubuntu от 10 до 14.

Особенно заметно на браузере. Открыть лор с темой Tango, свернуть-развернуть окно, получить белую вспышку в глаза. (Firefox/Chromium).

Доколе? Чем фиксить?

Deleted

BTW, композитинг средствами WM включал, с compton игрался. Бесполезно

Deleted ()
Ответ на: комментарий от i-rinat

Ещё предположение: WM показывает рамку раньше приложение отрисует виджеты. Попробую собрать thunar с «startup-notification» и перепроверить. В любом случае спасибо за ответ.

Deleted ()
Ответ на: комментарий от Deleted

thunar

Когда-то давно внимательнее посмотрел на Thunar и увидел, что левая панель там не хранила своё отрисованное состояние. На каждый запрос рисования её содержимое генерировалось заново. Если проводить другим окном поверх, это заметно как мерцание. Сейчас воспроизвести не удалось. Возможно, это исправили. А возможно, работает TearFree. Кстати, попробуй его включить.

Section "Device"
    Identifier "intel"
    Driver     "intel"
    Option     "TearFree"   "on"
EndSection

в /etc/X11/xorg.conf.d/20-intel-tearfree.conf.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Когда-то давно внимательнее посмотрел на Thunar и увидел, что левая панель там не хранила своё отрисованное состояние. На каждый запрос рисования её содержимое генерировалось заново.

А можно подробнее? Я бы хотел баг-репорт создать

TearFree всегда включен

Deleted ()
Ответ на: комментарий от Deleted

А можно подробнее?

Если чужое окно отодвигается в сторону, обнажая части (нашего) окна, нужно откуда-то взять изображение, которое будет там нарисовано. Существуют два подхода. Либо каждый раз при необходимости просить приложение нарисовать себя, либо держать для каждого окна в памяти изображение того, как оно выглядело раньше. В Xlib при создании окна можно попросить X сервер создать так называемый backing store. Можно сделать тестовое приложение, в котором создаётся окно либо с backing store, либо без, затем рисуется что-то поверх этого окна. Если потом заслонить его каким-то другим окном, в первом случае картинка восстановится, а во втором — нет. Естественно, хранение копий всех окон ест память.

В GTK+ вроде бы тоже подобное кеширование используется, хотя я никогда не вникал в детали. Но судя по тому, что строки CWBackingStore в исходниках нет, кеширование используется только на стороне клиента. Но даже кеширование на стороне клиента сильно помогает, когда рисование виджета — длительная операция. Послать кусок из готовой картинки всегда быстрее.

i-rinat ★★★★★ ()
Ответ на: комментарий от i-rinat

Благодарю. Если время позволит - напишу репорт.

Пока решилось удручающим костылем: WM из Cinnamon с включенной анимацией открытия окон. Пока WM свистит, Thunar и ему подобные успевают прорисовать виджеты, и появляются без бликов

Deleted ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.