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

RESOLVED INVALID

Status

()

P4
major
RESOLVED INVALID
18 years ago
11 years ago

People

(Reporter: buster, Unassigned)

Tracking

Trunk
Future
x86
Windows NT
Points:
---

Firefox Tracking Flags

(Not tracked)

Details

(Reporter)

Description

18 years ago
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.
(Reporter)

Updated

18 years ago
Target Milestone: --- → Future
(Reporter)

Comment 1

18 years ago
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
reassign
Assignee: attinasi → karnaze
QA Contact: petersen → amar

Updated

17 years ago
Priority: -- → P4

Comment 5

16 years ago
mass reassign to default owner
Assignee: karnaze → table
QA Contact: amar → madhur
Target Milestone: Future → ---
Target Milestone: --- → Future

Comment 6

14 years ago
No real activity in this bug for almost four years. So _has_ anybody found 
evidence there is a problem here or not?

Comment 7

14 years ago
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.

Comment 8

11 years ago
There is no pass 1 reflow any more
Status: NEW → RESOLVED
Last Resolved: 11 years ago
Resolution: --- → INVALID
You need to log in before you can comment on or make changes to this bug.