Closed Bug 342613 Opened 18 years ago Closed 18 years ago

[BeOS] nsWidget::Update() is flacky in BeOS

Categories

(Core Graveyard :: Widget: BeOS, defect)

x86
BeOS
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: sergei_d, Assigned: sergei_d)

Details

Attachments

(1 file, 1 obsolete file)

1.29 KB, patch
thesuckiestemail
: review+
Details | Diff | Splinter Review
In lot of situations content don't repaint until you resize window or do some other forcing action.

Problem is ::Update() method which relies on BWindow::UpdateIfNeeded to trigger BView::Draws() which should create non-empty repaint region. Only then OnPaint() is called.

That was done for reducing CPU-consumption at scrolling. But produce annoying results in other cases.

Solutions may be:
1)Use mView->Invalidate() at place of Window()->UpdateIfNeeded
2)Don't call SetViewColor(B_TRANSPARENT_COLOR) in nsViewBeOS constructor.
Shouldn't Mozilla's update be a force to redraw? Sounds like we should do 1).
It should, but it made BeZilla to do too heavy work, especially at scrolling. As ViewManager (gkview) follows each Widget::Scroll() call with Widget::Update() call.

But with current Scroll() code i tried intermidiate solution - just that 1) - and seems it don't increase CPU load too much. Probably BView's Invalidate() is quite intelligent in this case. And following forced OnPaint() which redraws only dirty region seems sufficient to redraw scroll-button at proper time.

If you noticed situation where page don't redraw and needs resize to be redrawn (usually this happens if page after clicking some submit button still has same name but different content) - i wish you test that 1) version. If it really fixes things on your machine too.
Attached patch patch (obsolete) — Splinter Review
patch. uses less expensive version when scrolling, bit more expensive version in other cases.
r=?
Assignee: nobody → sergei_d
Status: NEW → ASSIGNED
Attachment #227055 - Flags: review?(thesuckiestemail)
Comment on attachment 227055 [details] [diff] [review]
patch

r=thesuckiestemail@yahoo.se
Attachment #227055 - Flags: review?(thesuckiestemail) → review+
Checking in mozilla/widget/src/beos/nsWindow.cpp;
/cvsroot/mozilla/widget/src/beos/nsWindow.cpp,v  <--  nsWindow.cpp
new revision: 1.128; previous revision: 1.127
done 
Status: ASSIGNED → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
Regression in scrolling performance on pages with children is too noticeable.

Looks like we should ignore Update() calls for children.

Some patch will follow soon.
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
Attached patch patchSplinter Review
r=?
Attachment #227055 - Attachment is obsolete: true
Attachment #227270 - Flags: review?(thesuckiestemail)
Comment on attachment 227270 [details] [diff] [review]
patch

r=thesuckiestemail@yahoo.se
Ok, but I thinks the comments are rather unneccessary. It's not hard to read that code, you only add to the amount to read.
Attachment #227270 - Flags: review?(thesuckiestemail) → review+
Checking in mozilla/widget/src/beos/nsWindow.cpp;
/cvsroot/mozilla/widget/src/beos/nsWindow.cpp,v  <--  nsWindow.cpp
new revision: 1.129; previous revision: 1.128
done 
Status: REOPENED → RESOLVED
Closed: 18 years ago18 years ago
Resolution: --- → FIXED
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: