Solved TD-23492: ListView repaints and major application slowdowns

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

TD-23492: 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

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
You do not have the required permissions to view the files attached to this post.
Regards,
Dave Rabelink

Image
Articles and information on Team Developer Tips & Tricks Wiki
Download samples, documents and resources from TD Sample Vault
Videos on TDWiki YouTube Channel

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

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
Articles and information on Team Developer Tips & Tricks Wiki
Download samples, documents and resources from TD Sample Vault
Videos on TDWiki YouTube Channel

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

Re: TD-23492: ListView repaints and major application slowdowns

Post by Dave Rabelink » 12 Jun 2017, 07:19

This defect has been fixed in TD 7.0.2.

When you use ListViews, this is a real valuable fix. It solves the flickering and the resize of screens are really (really) faster.
Regards,
Dave Rabelink

Image
Articles and information on Team Developer Tips & Tricks Wiki
Download samples, documents and resources from TD Sample Vault
Videos on TDWiki YouTube Channel

Return to “Bug Reports”

Who is online

Users browsing this forum: Ccbot [Crawler] and 0 guests