SASGIS - SAS.Планета |
View Issue Details |
|
ID | Project | Category | View Status | Date Submitted | Last Update |
0001748 | SAS.Планета | Рефакторинг | public | 27-12-2012 19:30 | 30-12-2021 08:58 |
|
Reporter | vdemidov | |
Assigned To | | |
Priority | normal | Severity | major | Reproducibility | have not tried |
Status | confirmed | Resolution | open | |
Platform | | OS | | OS Version | |
Product Version | 110418 | |
Target Version | 26xxxx | Fixed in Version | | |
|
Summary | 0001748: Оптимизация слоя статусной строки |
Description | Разделить строку статуса на отдельные участки и сделать их независимыми слоями. В каждом сделать умную перерисовку только в том случае если данные поменялись. Сейчас оно перерисовывается все целиком пару раз в секунду. Мало того что само по себе набегает время, так еще и вызывает перерисовку на экране тайлов карты попадающих под статусную строку. |
Steps To Reproduce | |
Additional Information | |
Tags | перерисовка экрана, сетка, строка состояния, строка статуса |
Relationships | related to | 0001749 | confirmed | | Данные высот вычислять и показывать асинхронно |
|
Attached Files | |
|
Issue History |
Date Modified | Username | Field | Change |
27-12-2012 19:30 | vdemidov | New Issue | |
27-12-2012 19:31 | vdemidov | Status | new => confirmed |
27-12-2012 20:49 | vasketsov | Note Added: 0010237 | |
27-12-2012 20:50 | vasketsov | Note Edited: 0010237 | bug_revision_view_page.php?rev_id=5001 |
28-12-2012 04:44 | vdemidov | Note Added: 0010239 | |
28-12-2012 04:55 | vdemidov | Relationship added | related to 0001749 |
28-10-2013 07:54 | vdemidov | Note Deleted: 0010237 | |
28-10-2013 07:54 | vdemidov | Note Deleted: 0010239 | |
28-10-2013 07:54 | vdemidov | Severity | minor => major |
28-10-2013 07:54 | vdemidov | Target Version | 26xxxx => 24xxxx |
28-10-2013 07:56 | vdemidov | Note Added: 0013132 | |
28-10-2013 08:00 | vdemidov | Note Edited: 0013132 | bug_revision_view_page.php?bugnote_id=13132#r5788 |
29-10-2013 08:51 | vdemidov | Tag Attached: перерисовка экрана | |
29-10-2013 08:51 | vdemidov | Tag Attached: сетка | |
29-10-2013 08:51 | vdemidov | Tag Attached: строка состояния | |
29-10-2013 08:51 | vdemidov | Tag Attached: строка статуса | |
04-11-2013 14:22 | vdemidov | Target Version | 24xxxx => 140303 |
03-03-2014 08:47 | vdemidov | Target Version | 140303 => 140404 |
19-03-2014 08:03 | vdemidov | Target Version | 140404 => 141111 |
23-10-2014 09:07 | vdemidov | Target Version | 141111 => 150915 |
21-01-2015 10:39 | vdemidov | Target Version | 150915 => 151010 |
18-02-2015 10:01 | vdemidov | Note Added: 0015277 | |
04-10-2015 15:28 | vdemidov | Target Version | 151010 => 151111 |
06-11-2015 08:20 | vdemidov | Target Version | 151111 => 191221 |
15-10-2017 17:29 | zed | Note Added: 0018090 | |
15-10-2017 18:20 | vdemidov | Note Added: 0018091 | |
15-10-2017 18:25 | vdemidov | Note Edited: 0018091 | bug_revision_view_page.php?bugnote_id=18091#r7205 |
15-10-2017 18:39 | zed | Note Added: 0018092 | |
15-10-2017 19:20 | vdemidov | Note Added: 0018093 | |
23-07-2019 16:56 | vdemidov | Target Version | 191221 => 211230 |
30-12-2021 08:58 | zed | Target Version | 211230 => 26xxxx |
Notes |
|
(0013132)
|
vdemidov
|
28-10-2013 07:56
(edited on: 28-10-2013 08:00) |
|
Отрисовка строки статуса у меня занимает больше времени главного потока чем отрисовка всей карты.
PS: это при том, что у меня нет ни высот, ни часов в строке статуса.
|
|
|
|
Мне все больше хочется перевести строку состояния на использование датчиков. То есть, каждый элемент строки состояния будет иметь фиксированную ширину и отображать состояние одного из объектов ISensor. Конечно придется добавить новые типы датчиков: Текущий зум, Координаты под указателем мышки, Разрешение в центре экрана, Высота в центре экрана, Текущее время для пояса в центре экрана, Количество скачанных тайлов, Длинна очереди на закачку, Имя тайла под указателем мышки
Плюс нужно будет сделать отдельные списки активных датчиков-панелей и датчиков-строки-статуса (редактируемые через конфиг), что бы не создавать сходу всю кучу датчиков для каждого типа. Это позволит добавлять безболезненно новые типы датчиков, а пользователям подбирать нужный набор в панелях или строке состояния. |
|
|
(0018090)
|
zed
|
15-10-2017 17:29
|
|
Помимо того, что перерисовываются тайлы, также ещё перерисовываются и надписи у линейки или пути (при его редактировании). А рендеринг текста в этих случаях очень тяжеловесный и, в итоге, самой ресурсоёмкой операцией оказывается именно обновление надписей (занимает на порядок больше времени, чем обновление всей статусной строки). Другими словами, попытка редактирования пути с парой сотней точек, при включённых надписях (а они по дефолту включены), ставит систему на колени со 100% загрузкой ядра CPU.
>Мне все больше хочется перевести строку состояния на использование датчиков
Т.е. убрать эту полупрозрачную штуку, и сделать что-то на подобии стандартного TStatusBar? Не хотелось бы терять визуальную составляющую, т.к. мне лично нравится, как у нас сейчас выглядит эта строка. Но вот то, что она создаёт лишнюю нагрузку в простое, очень не нравится. |
|
|
(0018091)
|
vdemidov
|
15-10-2017 18:20
(edited on: 15-10-2017 18:25) |
|
Ну, проблемы при перерисовки надписей при редактировании линий это отдельная проблема и ее тоже нужно решать отдельно.
Про датчики. Визуальную составляющую оставить такой как есть. Поменять только механику. У датчиков уже сейчас есть разделение данных и их отображения. Есть отображение на панели, а нужно добавить отображение в строке статуса.
Но перед этим нужно добавить недостающие датчики и сделать Гуй для их выбора в строку статуса и на панели, а существующие пункты меню использовать только для временного скрытия добавленных. Просто всех возможных будет очень много, вплоть до сотни, и искать их в меню это перебор.
|
|
|
(0018092)
|
zed
|
15-10-2017 18:39
|
|
Т.е. изменение значения у датчика всё так же будет вызывать необходимость перерисовки пересекающихся тайлов и, что хуже всего, всех слоёв унаследованных от TMapLayerBasicNoBitmap, которые обновляются целиком, вне зависимости от того, какая часть родительской битмапки обновилась. |
|
|
|
Во-первых, это будут отдельные битмапка, а не одна большая на всю ширину. Во-вторых, обновляться они будут только при реальном изменении данных. В-третьих, проблемы медленного обновления других слоев это проблемы других слоев и их тоже нужно решать, но отдельно от этой. |
|