Я имею дело со старым приложением Motif, которое должно загружать и отображать длинный список записей (около 1500). Он создает и управляет экземпляром xmFormWidgetClass
через XtVaCreateManagedWidget()
, а затем заполняет его набором линейных иерархий xmFrameWidgetClass->xmFormWidgetClass->xmFormWidgetClass->xmPushButtonWidgetClass
. Каждый PushButton
содержит многострочную метку. Когда эта штука заполняется, она требует много ресурсов ЦП, которые тратит на вычисления геометрии внутри библиотек X / Motif. Скорость, с которой добавляются новые кнопки, очень быстро ухудшается. Похоже, что внутри XtVaCreateManagedWidget()
.
используется алгоритм O (N)
Все станет намного лучше, если я сделаю XtUnrealizeWidget()
на оригинальном экземпляре xmFormWidgetClass
. Записи добавляются практически с постоянной скоростью, но тогда я не могу найти способ отобразить все, что я построил. XtRealizeWidget()
для исходного экземпляра xmFormWidgetClass
не отображает его в окне.
Что я делаю не так? Есть ли способ заполнить иерархию, а затем вычислить геометрию и сразу отобразить ее на экране?
Редакция приложения - это опция, но это последний тип опции для опции.
Любой совет, который держит меня в библиотеках Motif, будет высоко оценен!
С уважением,
/ Сергей