To comment on the following update, log in, then open the issue:
http://www.openoffice.org/issues/show_bug.cgi?id=42462
User fs changed the following:
What |Old value |New value
================================================================================
CC|'au,pl' |'au,aw,pl'
--------------------------------------------------------------------------------
Summary|extremely poor rendering |extremely poor rendering
|performance |performance for non-
| |trivial numbers of form
| |controls
--------------------------------------------------------------------------------
------- Additional comments from [EMAIL PROTECTED] Fri Feb 11 03:05:20 -0800
2005 -------
Ah, form control performance ...
Things I know so far about this (I investigated a while ago in the course of
another issue):
- One problem is that the ListBox in VCL creates a floating window all the time,
even
if not needed. Normally, we could argue that this window is only needed when
the
(drop down) list box is to really open its floater... Unfortunately, the whole
ListBox
architecture is based on the ImplWindow, whose parent is the floating window,
even
for (normally unrelated) operations.
- The code at the very end of UnoWrapper::WindowDestroyed in
toolkit/source/helper contains a loop over all top level windows which
currently
exist. Due to some outdated architecture in VCL, this has a complexity of
O(n^3)
(not only O(n^2), as you would assume), with n being the number of system
windows. Unfortunately, the above-mentioned floating windows *are* system
windows, so this sums up pretty quickly (a document with 2000 list boxes can
take *hours* to open or close).
This explains at least the performance problem when closing such a document,
and in parts also when *opening* (where also all controls are
created/destroyed/created for some reason).
I have a patch for this O(n^3) problem, but not checked in, and it's missing
some
polishing requested by SSA, which I did not yet find time for.
Immediate ideas:
- Make the listbox not creating a floating window, unless really necessary. The
VCL people did not dare :) to do this in the 2.0 time frame, due to some
unforseeable
risks associated with it.
- create peers only if necessary, as suggested by you. I don't have the
slightest idea
whether and how this could work, since this touches areas of the drawing layer
where our form controls are only "guests", and which I rarely needed to look
at
(it was there long before I inherited the code :).
I cc Armin Le Grand here, who's our drawing layer expert.
Nevertheless, I'm willing to help to work on this, not only 'cause I am pretty
sure
I can learn a lot 'bout the drawng layer here :)
---------------------------------------------------------------------
Please do not reply to this automatically generated notification from
Issue Tracker. Please log onto the website and enter your comments.
http://qa.openoffice.org/issue_handling/project_issues.html#notification
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]