Dear guest !

Welcome to Team Developer Community Forum. A place created by the community, for the community !

This is a resource for Q & A and discussion about everything related to OpenText Gupta Team Developer, SqlBase, TD Mobile and Report Builder.
It is the alternative for the OpenText customer forums which can only be accessed with an active support contract.

Please register your account now. It will make you part of the active community.
Also, this guest message will not be displayed for registered users.

Having an account gives you the opportunity to ask questions and get help from others.
We hope this free gathering will help you and the community getting forward!

Best regards,
The forum site admins.

ListView repaints and major application slowdowns

Post found bugs and possible workarounds.
Post Reply
Dave Rabelink
Founder/Site Admin
Netherlands
Posts: 114
Joined: 24 Feb 2017, 09:12
Location: Gouda, The Netherlands
Contact:

ListView repaints and major application slowdowns

Post by Dave Rabelink » 20 Apr 2017, 08:01

When one or more listviews are present on a form/dialog and other objects on the same window are resized, the listview updates itself by repopulating the contents.

This causes the application to slowdown significantly.
Also the flickering is terrible.

When other objects are resized and nothing is done to the listview there is no purpose to repaint the listview.

Probably the cause is that it is a custom control and it seems that other custom controls show the same issue. It processes unnecessary repaints from the parent window.

Use testcase. It is in TD7.0 text format:

ListView_Repaints.zip
(46.91 KiB) Downloaded 8 times

1) Start application, it populates 1000 dummy entries into one listview. Wait for it to complete
2) Try to resize the form by dragging the right side of the window. Make the form bigger so that the existing listview will not be affected.
3) See that 5 datafields are resized accordingly.
4) See that during resize the listview repopulates. It repopulates on every resize of each datafield. So the 5 datafields will cause 5 times repopulate of the listview.
5) See the datafield counter. It counts the WM_Notify messages of the listview. Each WM_Notify is one single item which is populated.

The form flickers and the resize of the screen is crawling slow.

6) The "resize" button will call only one resize action which consists of each datafields to be resized once. Press the button and see that the listview is repopulated 5 times.

I tried to create a workaround by "eating" some messages using subclasser. It tries to make the listview ignore the requested repaint.
Use the checkbox "Fix" to enable this workaround and redo the tests. See that the form is better performing and the listview flickers are gone. Unfortunately this workaround causes instability on forms having a lot of objects and multiple listviews.
So it is here only implemented as a tryout. But it shows major improvement when TD will not force the updates.

This defect is registered by OpenText as:

Ticket # 3017170 : ListView repaints and major application slowdowns
Regards,
Dave Rabelink

Image
Join & participate on Team Developer Tips & Tricks Wiki
Download samples from TD Sample Vault
Videos on TDWiki YouTube Channel

Dave Rabelink
Founder/Site Admin
Netherlands
Posts: 114
Joined: 24 Feb 2017, 09:12
Location: Gouda, The Netherlands
Contact:

Re: ListView repaints and major application slowdowns

Post by Dave Rabelink » 23 Apr 2017, 10:11

OpenText assigned this defect number for this issue:

TD-23492: ListView repaints and major application slow downs

OpenText support could initially not reproduce the issue.
It seems it is dependent of the used TD theme.

You got the issue when using Native XP, Metro and some others.
Luna Blue theme does not show the defect.
Regards,
Dave Rabelink

Image
Join & participate on Team Developer Tips & Tricks Wiki
Download samples from TD Sample Vault
Videos on TDWiki YouTube Channel

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest