Closed Bug 66315 Opened 20 years ago Closed 13 years ago

we may invalidate during table pass-1 reflow, which would be a waste


(Core :: Layout: Tables, defect, P4)

Windows NT





(Reporter: buster, Unassigned)



table layout is a 2-pass algorithm.  the first pass asks the content of each
cell to lay itself out in unconstrained space and return metrics about its min
and preferred size.  during this pass, the frames should not make invalidate
calls, because the proper invalidate rects will be calculated during the second
Target Milestone: --- → Future
I did a quick test and couldn't find any evidence of this.  Basically, I had a
simple test case with a small table, set a breakpoint in nsFrame::Invalidate(),
and loaded the test case.  The calls to invalidate were never in the context of
a pass-1 reflow from the table code.  I added some script to fire off some
incremental reflows, and didn't see any pass-1 invalidates.

I'll leave this bug open as a reminder that this could be a problem, but make it
a low priority until somebody uncovers some evidence.
Build reassigning Buster's bugs to Marc.
Assignee: buster → attinasi
kicking over to Tables
Component: Layout → HTMLTables
Assignee: attinasi → karnaze
QA Contact: petersen → amar
Priority: -- → P4
mass reassign to default owner
Assignee: karnaze → table
QA Contact: amar → madhur
Target Milestone: Future → ---
Target Milestone: --- → Future
No real activity in this bug for almost four years. So _has_ anybody found 
evidence there is a problem here or not?
the job here is to see whether
/layout/html/table/src/nsTableCellFrame.cpp, line 496 --
Invalidate(GetOverflowRect(), PR_FALSE);
/layout/html/table/src/nsTableCellFrame.cpp, line 861 --
Invalidate(GetOverflowRect(), PR_FALSE);
/layout/html/table/src/nsTableFrame.cpp, line 1585 -- // Invalidate the area we
/layout/html/table/src/nsTableFrame.cpp, line 1589 -- Invalidate(dirtyRect);
/layout/html/table/src/nsTableFrame.cpp, line 1640 -- // table height, but first
we need to scrutinize every Invalidate
/layout/html/table/src/nsTableFrame.cpp, line 1644 -- PRBool aInvalidate,
/layout/html/table/src/nsTableFrame.cpp, line 1662 -- if (aInvalidate) {
/layout/html/table/src/nsTableFrame.cpp, line 1668 --
/layout/html/table/src/nsTableFrame.cpp, line 2093 -- // If we reflowed all the
rows, then invalidate the largest possible area that either the
/layout/html/table/src/nsTableFrame.cpp, line 2103 -- Invalidate(damage);
/layout/html/table/src/nsTableFrame.cpp, line 2995 -- Invalidate(dirtyRect);
/layout/html/table/src/nsTableFrame.cpp, line 3285 -- Invalidate(kidRect); //
invalidate the old position
/layout/html/table/src/nsTableFrame.cpp, line 3288 -- Invalidate(kidRect); //
invalidate the new position
/layout/html/table/src/nsTableOuterFrame.cpp, line 541 --
nsTableOuterFrame::InvalidateDamage(nsPresContext* aPresContext,
/layout/html/table/src/nsTableOuterFrame.cpp, line 625 -- Invalidate(damage);
/layout/html/table/src/nsTableOuterFrame.cpp, line 1552 --
InvalidateDamage(aPresContext, captionSide, desSize, innerMoved, PR_TRUE,
/layout/html/table/src/nsTableOuterFrame.cpp, line 1602 --
InvalidateDamage(aPresContext, (PRUint8) NO_SIDE, desSize, innerMoved, PR_FALSE,
/layout/html/table/src/nsTableOuterFrame.cpp, line 1773 --
InvalidateDamage(aPresContext, captionSide, desSize,
/layout/html/table/src/nsTableOuterFrame.cpp, line 1864 --
InvalidateDamage(aPresContext, captionSide, desSize, innerMoved, PR_TRUE,
/layout/html/table/src/nsTableOuterFrame.h, line 397 -- void
InvalidateDamage(nsPresContext* aPresContext,
/layout/html/table/src/nsTableRowFrame.cpp, line 1317 -- Invalidate(dirtyRect);
/layout/html/table/src/nsTableRowGroupFrame.cpp, line 1659 -- Invalidate(kidRect);
/layout/html/table/src/nsTableRowGroupFrame.cpp, line 1661 -- // Invalidate the
area we're offseting. Note that we only repaint within
/layout/html/table/src/nsTableRowGroupFrame.cpp, line 1668 -- Invalidate(dirtyRect);
/layout/html/table/src/nsTableRowGroupFrame.cpp, line 1698 -- Invalidate(dirtyRect);
these functions might be called during initial reflow.
There is no pass 1 reflow any more
Closed: 13 years ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.