Closed Bug 386380 Opened 18 years ago Closed 18 years ago

Txul regresssion after XUL popup rewrite landed

Categories

(Core :: XUL, defect)

defect
Not set
major

Tracking

()

RESOLVED FIXED

People

(Reporter: RyanVM, Assigned: enndeakin)

References

Details

(Keywords: perf, regression)

Attachments

(2 files)

Since the landing of Neil's XUL popup rewrite, Txul regressed by 3-7% across the board.
Flags: blocking1.9?
Keywords: perf
Likely caused by the creation of the popup frames (and more likely the views/widgets) right away rather than when they are opened. Might be possible to delay the widget creation until later though.
Assignee: nobody → enndeakin
Yeah, the widgets are what I'd guess to be the most likely problem...
This patch is the differences from the patch in bug 279703. It cleans up the view creation code so that it creates a hidden view at the right position rather than creating one and fiddling with it, and moves the widget code so that widgets are created just before the popup opens. This change improves the performance regression on my two machines, although I can't tell whether it fixes the regression completely and the results I'm getting are just noise, or whether there is still some work to be done. I guess roc would be a suitable reviewer if bz is away, would be good to get this reviewed soon.
Attachment #270664 - Flags: superreview?(roc)
Attachment #270664 - Flags: review?(roc)
Comment on attachment 270664 [details] [diff] [review] create widgets later ++ nsIView* ourView = GetView(); ++ if (!ourView->HasWidget()) { ++ CreateWidgetForView(ourView); ++ } Share this in an EnsureWidget helper function? That function should assert that the frame has no child frames, since trying to do this when the frame might have children with their own widgets would be disastrous.
Attachment #270664 - Flags: superreview?(roc)
Attachment #270664 - Flags: superreview+
Attachment #270664 - Flags: review?(roc)
Attachment #270664 - Flags: review+
An issue with the patch above is that submenus don't open properly. As they haven't had widgets created yet, the code in nsContainerFrame::SyncFrameViewProperties defaults to thinking that the view is visible, thus, not adjusting it properly when the view really is visible. Not sure if the check for (windowType == eWindowType_popup) can just be an assertion.
Attachment #270731 - Flags: superreview?(roc)
Attachment #270731 - Flags: review?(roc)
Comment on attachment 270731 [details] [diff] [review] Found an issue with the above patch Yeah, I think the eWindowType_popup check can just be an assertion
Attachment #270731 - Flags: superreview?(roc)
Attachment #270731 - Flags: superreview+
Attachment #270731 - Flags: review?(roc)
Attachment #270731 - Flags: review+
These patches look to have fixed the txul regression, so marking this fixed.
Status: NEW → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
Flags: blocking1.9? → blocking1.9+
Flags: in-testsuite-
Component: XP Toolkit/Widgets: Menus → XUL
QA Contact: xptoolkit.menus → xptoolkit.widgets
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: