Bug 1464916 - [Wayland] toolbar menu is not shown after some time
[Wayland] toolbar menu is not shown after some time
Product: Fedora
Classification: Fedora
Component: firefox (Show other bugs)
Unspecified Unspecified
unspecified Severity unspecified
: ---
: ---
Assigned To: Martin Stransky
Fedora Extras Quality Assurance
Depends On:
Blocks: ffwayland
  Show dependency treegraph
Reported: 2017-06-26 04:52 EDT by Martin Stransky
Modified: 2017-07-14 03:34 EDT (History)
6 users (show)

See Also:
Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2017-07-14 03:34:12 EDT
Type: Bug
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

  None (edit)
Description Martin Stransky 2017-06-26 04:52:42 EDT
Description of problem:


When pop up menu is opened repeatedly it's not shown. May be caused by missing parent gdk surface (gdk_wayland_window_get_wl_surface() returns null) and when background surface is transparent (after pop-up transparency fix).
Comment 1 Martin Stransky 2017-07-10 16:17:13 EDT
It may be caused by calling wl_surface_damage() to buffer which is released afterward and a new buffer is attached with zero damage area so nothing is rendered:

[3841717.306]  -> wl_surface@37.damage(0, 0, 532, 429)
>>>> **************** <<<<
[3841724.027] wl_buffer@56.release()
[3841724.041] wl_callback@124.done(8433000)
[3841724.048]  -> wl_surface@37.frame(new id wl_callback@124)
[3841724.054]  -> wl_surface@37.attach(wl_buffer@53, 0, 0)
[3841724.061]  -> wl_surface@37.commit()
Comment 2 Martin Stransky 2017-07-10 16:18:08 EDT
So looks like we need to call wl_surface_damage after wl_surface_attach.
Comment 3 Martin Stransky 2017-07-12 05:14:10 EDT
Fix is committed to commit 32899bf0d996dbe1008bd9abd79724a8217fb6b8 but it's seem incomplete - I still see the missing popups.
Comment 4 Martin Stransky 2017-07-13 06:42:35 EDT
Hm, that does not fix that. The real problem here is that we wait for wl_surface frame callback to draw but the wl_surface is not visible. So the frame callback is not going to be called and we don't know that.

Note You need to log in before you can comment on or make changes to this bug.