Closed Bug 1782948 Opened 2 months ago Closed 2 months ago

[Wayland] Firefox UI freezes when we fail to show a popup

Categories

(Core :: Widget: Gtk, defect, P3)

defect

Tracking

()

RESOLVED FIXED
105 Branch
Tracking Status
firefox105 --- fixed

People

(Reporter: stransky, Assigned: stransky)

References

(Blocks 1 open bug)

Details

Attachments

(4 files, 5 obsolete files)

48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review
48 bytes, text/x-phabricator-request
Details | Review

When we fail to show a popup (see https://bugzilla.mozilla.org/show_bug.cgi?id=1709254#c40) Firefox UI may freeze.

It's because popups created by chrome uses the same refresh driver/pres shell as main Firefox window and when rendering to popup is jammed (we can't create drawing target for it) whole UI is blocked.

Assignee: nobody → stransky
Status: NEW → ASSIGNED

Make RevokeTransactionIdAllocator() call part of nsBaseWidget::DestroyCompositor() so we don't need to do extra call.

Depends on D153768

As popups and Firefox main window can share refresh drivers we need to remove blocked compositing requests of hidden windows to make sure
we're not blocking other windows.

Depends on D153769

Attachment #9288511 - Attachment is obsolete: true

Hm, I need to submit the patches again as I mixed the IDs. Sorry for the confusion.

Attachment #9288512 - Attachment is obsolete: true
Attachment #9288887 - Attachment is obsolete: true
Attachment #9288888 - Attachment is obsolete: true
Attachment #9288513 - Attachment is obsolete: true

Make RevokeTransactionIdAllocator() call part of nsBaseWidget::DestroyCompositor() so we don't need to do extra call.

Depends on D154004

As popups and Firefox main window can share refresh drivers we need to remove blocked compositing requests of hidden windows to make sure
we're not blocking other windows.

Implement moz_container_wayland_clear_waiting_to_show_flag() to clear MozContainer::waiting_to_show flag.

Depends on D154005

Attachment #9288894 - Attachment description: Bug 1782948 [Wayland] Make access to MozContainer::waiting_to_show thread safe r?emilio → Bug 1782948 [Wayland] Assert if MozContainer::waiting_to_show is accessed from different threads r?emilio
Pushed by stransky@redhat.com:
https://hg.mozilla.org/integration/autoland/rev/5a601581119a
[Wayland] Implement waiting_to_show flag at mozcontainer to indicate that mozcontainer is supposed to be visible but it isn't (yet) r=emilio
https://hg.mozilla.org/integration/autoland/rev/fd1e0e18dd07
[Linux] Make RevokeTransactionIdAllocator() call part of nsBaseWidget::DestroyCompositor() r=emilio
https://hg.mozilla.org/integration/autoland/rev/750eeb107b8e
[Wayland] When we fail to show wayland popup, purge webrender queue and destroy compositor of the popup to make sure we're not blocking rendering of other windows r=emilio
https://hg.mozilla.org/integration/autoland/rev/f29f4ba84621
[Wayland] Assert if MozContainer::waiting_to_show is accessed from different threads r=emilio
Regressions: 1784067
Regressions: 1784688
No longer regressions: 1784688
You need to log in before you can comment on or make changes to this bug.