Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 969 - 1Cv77: Медленная прорисовка меню   Make a simular bug
Summary: 1Cv77: Медленная прорисовка меню
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Окна / фокус / перерисовка (show other bugs)
Version: 1.0.8
Hardware: PC Linux
: P4 normal
Target Milestone: ---
Assignee: BUGS@Etersoft
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on: 1840 3971
Blocks: 760 3174 8500
  Show dependency treegraph
 
In work:
Reported: 2007-12-18 12:52 MSK by Александр Пликус
Modified: 2012-08-12 22:06 MSK (History)
6 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments
лог по WINEDEBUG=+event (149.68 KB, text/plain)
2010-11-18 03:58 MSK, Igor Talanov
Details
Скриншот (135.16 KB, image/jpeg)
2010-11-18 03:58 MSK, Igor Talanov
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Александр Пликус Живая Классика 2007-12-18 12:52:41 MSK
Выполняется локально 1с 7.7 SQL версия при работе с Postgres (возможно не зависит). Меню прорисовывается очень медленно и два раза (очень видно)!
Comment 1 Александр Пликус Живая Классика 2007-12-18 12:56:32 MSK
на локальной dbf базе тоже самое
Comment 2 Александр Пликус Живая Классика 2007-12-18 13:04:04 MSK
на 27 релизе с пустой локально раположенной базой тоже медленно.
Хотя рабочая заполненная база работает нормально. Отличие только в .wine.
Comment 3 Александр Пликус Живая Классика 2007-12-18 13:30:41 MSK
Оказалось, что медленно откравыются пункты меню с картинками
Comment 4 Vitaly Lipatov Живая Классика 2007-12-21 13:35:58 MSK
Толя, надо посмотреть почему в 1С так странно (по два раза) меню отрисовывается. Быть может есть причина.
Comment 5 Vitaly Lipatov Живая Классика 2007-12-27 21:51:06 MSK
При проверке на CentOS/5 (GNOME) обнаружилось, что меню не перерисовывается дважды, и быстро открывается.
Comment 6 Анатолий Лютин Живая Классика 2008-01-28 15:00:51 MSK
Проверял на Gnome под Alt Linux 4.0  - точно так же всё тормозит, как и в KDE.
Comment 7 Анатолий Лютин Живая Классика 2008-01-29 15:30:22 MSK
В wwo такие же проблемы.
Comment 8 Анатолий Лютин Живая Классика 2008-01-29 19:48:10 MSK
Заметил разницу, что в CentOS/5, где идеально работает меню, при заполнении его создаются картинки :
11drv:X11DRV_CreateBitmap (0x3a84) 8x8 24 bpp
trace:x11drv:X11DRV_GetBitmapBits (bmp=0x3a84, buffer=0x11c5a88, count=0x80)
trace:x11drv:X11DRV_CreateBitmap (0x3a90) 22x20 24 bpp
trace:x11drv:X11DRV_CreateBitmap (0x3a94) 20x20 1 bpp

а у нас в Альте с KDE, создаются с 16 bpp
Comment 9 Анатолий Лютин Живая Классика 2008-01-29 20:15:05 MSK
Проверил на cellar локально, если поставить в настройках Xorg 24 bpp, то на Nvidia  под KDE в  AltLinux 4.0 всё отрисовывается быстро.
Comment 10 Анатолий Лютин Живая Классика 2008-01-29 20:27:01 MSK
Ещё забыл добавить, что на CentOS/5 меню тоже два раза отрисовывается (судя по трейсам) и действия одинаковы при медленной отрисовке и быстрой. Считаю, что при использовании 16 bpp по неясной причине слишком долго создаются картинки иксовыми функциями, из-за этого такие тормаза при отрисовке меню.
Comment 11 Анатолий Лютин Живая Классика 2008-02-01 15:59:51 MSK
У Саши выставили 24 bpp, картинки, судя по трейсам, с 24 bpp создаются, но всё тормозит. Есть предположение, что это из-за того, что видеокарточка radeon (как и у меня)
Comment 12 Анатолий Лютин Живая Классика 2008-02-01 16:12:34 MSK
При локальной работе меню у Саши рисуется тоже быстро.
Comment 13 Анатолий Лютин Живая Классика 2008-02-01 16:16:55 MSK
Выставили 16 bpp Саше, запускали локально. Меню перерисовывается быстро.
Comment 14 Анатолий Лютин Живая Классика 2008-07-10 16:16:56 MSD
Не занимаюсь.
Comment 15 Анатолий Лютин Живая Классика 2008-07-10 16:18:57 MSD
Не занимаюсь.
Comment 16 Илья Шпигорь Живая Классика 2008-10-22 17:47:33 MSD
Выложил патч.

По сути это хак, запрещающий отрисовку по событию Expose для окон стиля (WS_POPUP | WS_CLIPSIBLINGS | WS_VISIBLE). Поскольку, у таких окон нет border или thickfarme, скорее всего, хак затронет только вспомогательные popup окна, пропадающие при потере фокуса.
Comment 17 Илья Шпигорь Живая Классика 2008-10-23 10:00:40 MSD
Немного потестировал в Компасе, 1с8, Налогоплательщике, FineReader. Проблем вызванных этим патчем не обнаружил.
Comment 18 Константин Кондратюк Живая Классика 2008-10-23 10:03:26 MSD
Всё же будь готов вставить проверку на 1С, если обнаружится, что что-нибудь ломается совсем стороннее.

Или может быть стоит сделать сразу?
Comment 19 Илья Шпигорь Живая Классика 2008-10-23 10:58:03 MSD
Выложил TRY 2 с проверкой на версию 1с7.
Comment 20 Денис Баранов Живая Классика 2008-12-11 17:23:58 MSK
/*Протестировано*\
Comment 21 Igor Talanov Живая Классика 2008-12-26 15:07:27 MSK
http://rt.etersoft.ru/Ticket/Display.html?id=9277

Ошибка вернулась.
1с 7.7
eter37/eter15
mandriva 2008.1
Происходит при работе клиента по сети, то есть на сервере
запускается процесс и его вывод направляется на X-сервер клиента.
В случае локального запуска всё работает нормально. При работе по
сети медленно и по два раза перерисовываются меню.
Comment 22 Igor Talanov Живая Классика 2008-12-26 15:08:35 MSK
Created attachment 997 [details]
лог по WINEDEBUG=+event
Comment 23 Igor Talanov Живая Классика 2008-12-26 15:09:18 MSK
Created attachment 998 [details]
Скриншот
Comment 24 Илья Шпигорь Живая Классика 2008-12-27 11:44:27 MSK
Похоже здесь 2 проблемы (о которых говориться в заявке):

1) Не пропадает предыдущее окно меню, пока новое до конца не отрисуется
2) Пункты меню отрисовываются медленно

Можно как-нибудь у нас протестировать, что меню прорисовывается 2 раза? Локально отрисовка происходит только 1 раз.
Comment 25 Илья Шпигорь Живая Классика 2009-02-02 11:07:54 MSK
> 1) Не пропадает предыдущее окно меню, пока
> новое до конца не отрисуется

Эта проблема связана с тем, что для отрисовки пункта меню вызывается MENU_DrawMenuItem, которая для элементов с MF_OWNERDRAW посылает WM_DRAWITEM родителю.
Некоторые пункты меню содержат только текст и родитель отрисовывает их также быстро, как в windows. Если же пункт меню с картинкой, то родителем вызывается BitBlt, которая работает достаточно медленно. Пока родитель не отрисует все, MENU_DrawMenuItem не вернет управление, а 1с сначала рисует открываемое окно меню, а потом стирает предыдущее.

Реализация dib engine должна решить багу.
Comment 26 Vitaly Lipatov Живая Классика 2012-01-13 21:48:55 MSK
Нет исполнителя bugs@, решать некому пока. Решили отложить.
Comment 27 Vitaly Lipatov Живая Классика 2012-08-12 22:06:12 MSK
Жалоб нет, DBI Engine есть. Закрываю.