| Summary: | DisplayList::Recorder::ContextState::wasUsedForDrawing is unused and can probably be removed | ||||||
|---|---|---|---|---|---|---|---|
| Product: | WebKit | Reporter: | Cameron McCormack (:heycam) <heycam> | ||||
| Component: | Layout and Rendering | Assignee: | Cameron McCormack (:heycam) <heycam> | ||||
| Status: | RESOLVED FIXED | ||||||
| Severity: | Normal | CC: | bfulgham, sabouhallawa, simon.fraser, webkit-bug-importer, zalan | ||||
| Priority: | P2 | Keywords: | InRadar | ||||
| Version: | WebKit Local Build | ||||||
| Hardware: | Unspecified | ||||||
| OS: | Unspecified | ||||||
| See Also: |
https://bugs.webkit.org/show_bug.cgi?id=208659 https://bugs.webkit.org/show_bug.cgi?id=152816 |
||||||
| Attachments: |
|
||||||
|
Description
Cameron McCormack (:heycam)
2021-05-04 21:41:09 PDT
Created attachment 427732 [details]
Patch
This member was introduced in r194708 and its use was removed in r257958. Its original goal was to remove save/restore pair from DisplayList if no drawing happens in between. For example a sequence like this can be completed removed from the DisplayList since its replaying back has no effect: context.save(); context.setFillColor(Color::green); context.restore(); But the problem was in the Canvas case where calling the save() and restore() may happen in different frames. Recording a restore item may try to remove the last save item although the matching save item was pushed to the context of the ImageBuffer many frames earlier. Thanks for the background. I did do a `grep -G wasUsedForDrawing` to check, but that didn't bring up the r257958 commit (since that removed a use of the `stateUsedForDrawing` local variable). (In reply to Cameron McCormack (:heycam) from comment #3) > Thanks for the background. I did do a `grep -G wasUsedForDrawing` *git grep -G wasUsedForDrawing Committed r277050 (237360@main): <https://commits.webkit.org/237360@main> All reviewed patches have been landed. Closing bug and clearing flags on attachment 427732 [details]. |