[Wayland] Don't use oversized surface sizes
Categories
(Core :: Widget: Gtk, defect, P3)
Tracking
()
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)
(deleted),
text/x-phabricator-request
|
RyanVM
:
approval-mozilla-beta+
|
Details |
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.
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 1•5 years ago
|
||
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()
Assignee | ||
Comment 2•5 years ago
|
||
- 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.
Updated•5 years ago
|
Comment 4•5 years ago
|
||
bugherder |
Assignee | ||
Comment 5•5 years ago
|
||
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
Updated•5 years ago
|
Comment 6•5 years ago
|
||
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.
Comment 7•5 years ago
|
||
bugherder uplift |
Updated•5 years ago
|
Description
•