[Wayland] Popups are not shown with multi-buffer backend
Categories
(Core :: Widget: Gtk, defect, P1)
Tracking
()
Tracking | Status | |
---|---|---|
firefox92 | --- | verified |
People
(Reporter: stransky, Assigned: rmader)
References
(Blocks 3 open bugs)
Details
Attachments
(2 files, 1 obsolete file)
When multi-buffer backend is used, some popups are not painted.
Reproduction steps:
- Go to about:preferences#home
- Click on any combo box there.
- The combo box button looks active (pressed) but popup window under it is not shown.
- Move mouse under the combo box (where a popup should be painted) and you'll see popup content now.
For debugging you also can remove gtk_widget_set_app_paintable() calls from nsWindow::Create(), all popups won't be transparent and you'll see if popup content is painted or not.
Robert, can you please look at it?
Thanks.
Reporter | ||
Comment 1•4 years ago
|
||
Also when mouse cursor is moved over menu toolbar some menu are not painted (I expect the same reason).
Reporter | ||
Comment 2•4 years ago
|
||
Screencast of the issue.
Reporter | ||
Updated•4 years ago
|
Assignee | ||
Comment 3•4 years ago
|
||
Indeed, will look into it! I also affects the compositor backend (which uses very similar logic), so I must have made a logic mistake in both of them.
Assignee | ||
Comment 4•4 years ago
|
||
moz_container_wayland_surface_lock
currently only returns a valid
surface if ready_to_draw
is set. This results in initial draws
not getting submitted, which the single buffer backend handles by
adding a timer.
For the multi-buffered backend there's no obvious reason to wait -
the buffer can already be attached and will become visible once the
surface gets mapped.
Assignee | ||
Comment 5•4 years ago
|
||
Blocking bug 1617498 as it's similarly affected and we might be able to come up with a common solution here.
Updated•4 years ago
|
Assignee | ||
Comment 7•4 years ago
|
||
When the MozContainer
surface is not yet ready in Commit()
,
we need to queue the commit.
Similar to nsWindow
and WaylandVsyncSource
we can do so by
registering via a callback via add_initial_draw_callback()
.
This required some logic changes which let to clean ups and
simplifications in the whole file (I'm sorry it got so big).
Assignee | ||
Comment 8•4 years ago
|
||
Comment 10•4 years ago
|
||
bugherder |
Updated•3 years ago
|
Comment 11•3 years ago
|
||
Reproduced the issue on Firefox 92.0a1 (2021-07-17) under Ubuntu 20.04 Wayland by following the STR from Comment 0.
The issue is no longer reproducible on Firefox 92.0 on the same system.
Description
•