Closed
Bug 66315
Opened 24 years ago
Closed 17 years ago
we may invalidate during table pass-1 reflow, which would be a waste
Categories
(Core :: Layout: Tables, defect, P4)
Tracking
()
RESOLVED
INVALID
Future
People
(Reporter: buster, Unassigned)
References
Details
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
pass.
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.
Updated•22 years ago
|
Priority: -- → P4
Comment 5•22 years ago
|
||
mass reassign to default owner
Assignee: karnaze → table
QA Contact: amar → madhur
Target Milestone: Future → ---
Updated•22 years ago
|
Target Milestone: --- → Future
Comment 6•20 years ago
|
||
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
offset.
/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 --
aTableFrame.Invalidate(damageRect);
/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
Status: NEW → RESOLVED
Closed: 17 years ago
Resolution: --- → INVALID
Updated•17 years ago
|
Depends on: reflow-refactor
You need to log in
before you can comment on or make changes to this bug.
Description
•