Closed Bug 507550 Opened 13 years ago Closed 13 years ago

Invalidation issues resizing windows with scaled tiled backgrounds


(Core :: CSS Parsing and Computation, defect, P2)






(Reporter: Waldo, Assigned: Waldo)



(Keywords: css3)


(1 file)

<Waldo> bz: so, I'm seeing hideous artifacts on Windows if I load <>, then <"experimental";[].v>, then resize the window -- could it be a ireflow problem? I don't remember seeing this on OS X when testing background-size patches
<Waldo> screenshot: (note a few rects with proper rendering showing through where another window in the OS obscured the page at one point)

bz sez doesn't look like ireflow, maybe invalidation, so looks like I get to investigate and determine what's wrong.
This doesn't reproduce in OS X, hence why I never saw it during my own testing.
Part of the story appears to be nsFrame::CheckInvalidateSizeChange.  If I breakpoint in that when resizing the window, I get the interesting result that aOldRect has zero height and apparently-reasonable width.  Of course, invalidating that (with a tweak to the background loop in that method, to accommodate contain/cover) doesn't have much effect, and if I hop up a couple levels in the stack I don't see anything in nsBlockFrame::Reflow that invalidates anything else in view (assuming that you start with about:blank following the instructions in comment 0).  The method has comments that claim aNewDesiredSize - aOldRect should have been invalidated elsewhere, but I don't see where that would happen.
Flags: blocking1.9.2?
Maybe more info on the problem in bug 509329? (which might be the same thing?)
Depends on: 509329
Flags: blocking1.9.2? → blocking1.9.2+
Priority: -- → P2
(As I noted in bug 509329 I plan to get to this next week.)
Attached file Reduced testcase
Here's a testcase reduced from the original errors.  With respect to the proto-patch in bug 509329, two bits are important: first, it's a fixed background, and second, the body has a width.  Remove those, or the latter, and with that first patch there this testcase will work correctly.
This bug is cross-platform; its visibility seems to depend on the frequency of OS-level whole-window invalidates.  OS X invalidates often enough that this never shows up there, but Linux and Windows are more judicious and thus demonstrate problems during (and for Windows, after) window resizing.
OS: Windows XP → All
Hardware: x86 → All
Summary: Invalidation (?) issues resizing windows with scaled tiled backgrounds in Windows → Invalidation issues resizing windows with scaled tiled backgrounds
Fixed in bug 509329.
Closed: 13 years ago
Resolution: --- → DUPLICATE
Duplicate of bug: 509329
You need to log in before you can comment on or make changes to this bug.