Closed Bug 782980 Opened 12 years ago Closed 12 years ago

Temporary blank boxes on right and bottom while resizing browser window

Categories

(Core :: Web Painting, defect)

defect
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla17

People

(Reporter: BenWa, Assigned: mattwoodrow)

References

Details

(Keywords: regression)

Attachments

(1 file, 1 obsolete file)

I get a black bar while resizing that is similar to an async resize artifact.
Approximate regression range:
hg.mozilla.org/mozilla-central/pushloghtml?fromchange=f89feda9d997&tochange=0678e3e84923
Keywords: regression
Here's a more precise description:

Black boxes appear (temporarily) to the right and bottom of a browser window while rapidly resizing it.
The regression range in mozilla-central nightlies is:

firefox-2012-08-13-03-05-32-mozilla-central
firefox-2012-08-14-03-05-21-mozilla-central

So far both Benoit and I have only tested on OS X 10.7.4.
I see a similar bug (and regression range) on OS X 10.6.8.  But in this case the boxes (to the right and bottom) are filled with junk/noise (they're not black).
Summary: Black bar while resizing on OS X → Temporary extra boxes to right and bottom while resizing browser window on OS X
Summary: Temporary extra boxes to right and bottom while resizing browser window on OS X → Temporary extra boxes on right and bottom while resizing browser window on OS X
Summary: Temporary extra boxes on right and bottom while resizing browser window on OS X → Temporary blank boxes on right and bottom while resizing browser window on OS X
I see exactly the same symptoms (and regression range) on OS X 10.8 as I do on 10.7.4.
I've found the patch that caused/triggered this bug:

http://hg.mozilla.org/mozilla-central/rev/0ad204385022

 Bug 770000 - Call WillPaint and DidPaint from the refresh driver instead of the widget events. r=roc
author	Matt Woodrow <mwoodrow@mozilla.com>
	Mon Aug 13 22:10:11 2012 +1200 (at Mon Aug 13 22:10:11 2012 +1200)
Blocks: 770000
This happens when we resize the widget/view but don't get a refresh driver tick before we attempt to composite again.

This just forces us to repaint the retained layers synchronously so that this doesn't happen.
Attachment #653213 - Flags: review?(roc)
The previous patch caused painting during reflow with associated assertions.

This delays the forced paint until we attempt to composite.
Attachment #653213 - Attachment is obsolete: true
Attachment #653242 - Flags: review?(roc)
Comment on attachment 653242 [details] [diff] [review]
Repaint layers when the view size changes v2

Review of attachment 653242 [details] [diff] [review]:
-----------------------------------------------------------------

::: view/src/nsViewManager.cpp
@@ +338,5 @@
>    }
>  
> +  nsIWidget *widget = aView->GetWidget();
> +  if (!widget) {
> +    return;

I think the new code should be inside "if (widget)" instead of bailing out here whenever there's no widget.
We just crash inside PresShell::Paint if we do that - see bug 770424
Blocks: 783791
Component: Widget: Cocoa → Layout: View Rendering
OS: Mac OS X → All
Hardware: x86 → All
Summary: Temporary blank boxes on right and bottom while resizing browser window on OS X → Temporary blank boxes on right and bottom while resizing browser window
Version: unspecified → Trunk
https://hg.mozilla.org/mozilla-central/rev/2a39d3361d72
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla17
Blocks: 797431
Depends on: 805745
No longer depends on: 805745
Depends on: 793983
Depends on: 805745
No longer depends on: 805745
Depends on: 805745
Component: Layout: View Rendering → Layout: Web Painting
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: