Closed Bug 1627469 Opened 4 years ago Closed 4 years ago

[Wayland] Don't use oversized surface sizes

Categories

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

defect

Tracking

()

RESOLVED FIXED
mozilla77
Tracking Status
firefox-esr68 --- unaffected
firefox74 --- unaffected
firefox75 --- unaffected
firefox76 --- fixed
firefox77 --- fixed

People

(Reporter: stransky, Assigned: stransky)

References

(Blocks 1 open bug, Regression)

Details

(Keywords: regression)

Attachments

(1 file)

After Bug 1623060 we use widget size for wayland buffer size. But sometimes widget allocation is bigger than our lock area and causes rendering artifacts of popup windows. So we need to use lock area in that case.

This seems to be caused by NativeMoveResizeWaylandPopupCallback() where the popup is resized over size requested by Firefox:

[Parent 29101: Main Thread]: D/Widget nsWindow::Show [0x7f37cad5d800] state 1
[Parent 29101: Main Thread]: D/Widget nsWindow::ConfigureWaylandPopupWindows [0x7f37cad5d800], frame 0x7f37d158e7e0 hasRemoteContent 0
[Parent 29101: Main Thread]: D/Widget [0x7f37cad5d800] popup node id=contentAreaContextMenu
[Parent 29101: Main Thread]: D/Widget [0x7f37cad5d800] is already configured.
[Parent 29101: Main Thread]: D/Widget moz_container_size_allocate [0x7f37d06a1a40] 0,0 -> 177 x 157
[Parent 29101: Main Thread]: D/WidgetWayland moz_container_move [0x7f37d06a1a40] 0,0
[Parent 29101: Main Thread]: D/Widget nsWindow::OnSizeAllocate [0x7f37cad5d800] 0,0 -> 177 x 157

[...]

[1295191.640] xdg_popup@78.configure(593, 820, 200, 200)
[Parent 29101: Main Thread]: D/Widget NativeMoveResizeWaylandPopupCallback [0x7f37cad5d800] flipped_x 0 flipped_y 0
[Parent 29101: Main Thread]: D/Widget flipped_rect x=619 y=892 width=200 height=200
[Parent 29101: Main Thread]: D/Widget final_rect x=619 y=843 width=200 height=200
[Parent 29101: Main Thread]: D/Widget orig mBounds x=1238 y=1784 width=354 height=314
[Parent 29101: Main Thread]: D/Widget new mBounds x=1238 y=1686 width=400 height=400
[Parent 29101: Main Thread]: D/Widget workarea for [0x7f37cad5d800], monitor 0x7f380d06b100: x0 y0 w3840 h2160
[1295191.742] xdg_surface@77.configure(544)
[1295191.771] -> xdg_surface@77.ack_configure(544)
[1295191.923] -> wl_shm@5.create_pool(new id wl_shm_pool@76, fd 137, 640000)
[1295191.961] -> wl_shm_pool@76.create_buffer(new id wl_buffer@81, 0, 400, 400, 1600, 0)
[1295192.282] -> wl_surface@74.attach(wl_buffer@81, 0, 0)
[1295192.296] -> wl_surface@74.set_buffer_scale(2)
[1295192.301] -> wl_surface@74.damage(0, 0, 200, 200)
[1295192.313] -> xdg_surface@77.set_window_geometry(0, 0, 200, 200)
[1295192.325] -> wl_surface@74.set_input_region(nil)
[1295192.349] -> wl_surface@74.frame(new id wl_callback@82)
[1295192.358] -> wl_surface@74.commit()

  • Calculate size of wl_buffer as an intersection of widget size and nsWindow bound size.
    We can't use wl_buffer bigger than nsWindow bound as it leads to rendering artifacts.
Pushed by opoprus@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/812b28276cbc
[Wayland] [Wayland] Don't use oversized wl_surface sizes, r=jhorak
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla77

Comment on attachment 9138308 [details]
Bug 1627469 [Wayland] [Wayland] Don't use oversized wl_surface sizes, r?jhorak

Beta/Release Uplift Approval Request

  • User impact if declined: Visual glitches on popup windows.
  • Is this code covered by automated tests?: No
  • Has the fix been verified in Nightly?: No
  • Needs manual test from QE?: No
  • If yes, steps to reproduce:
  • List of other uplifts needed: None
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): Wayland only. Using gecko sized wl_surfaces instead of widget size should not cause any issue.
  • String changes made/needed: none
Attachment #9138308 - Flags: approval-mozilla-beta?

Comment on attachment 9138308 [details]
Bug 1627469 [Wayland] [Wayland] Don't use oversized wl_surface sizes, r?jhorak

Fixes a Wayland-only bug. Approved for 76.0b2.

Attachment #9138308 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
Has Regression Range: --- → yes
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: