Bug 1464916 - [Wayland] toolbar menu is not shown after some time
Summary: [Wayland] toolbar menu is not shown after some time
Keywords:
Status: CLOSED RAWHIDE
Alias: None
Product: Fedora
Classification: Fedora
Component: firefox
Version: rawhide
Hardware: Unspecified
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Martin Stransky
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks: ffwayland
TreeView+ depends on / blocked
 
Reported: 2017-06-26 08:52 UTC by Martin Stransky
Modified: 2017-07-14 07:34 UTC (History)
6 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2017-07-14 07:34:12 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Martin Stransky 2017-06-26 08:52:42 UTC
Description of problem:

https://github.com/stransky/gecko-dev

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 20:17:13 UTC
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(0, 0, 532, 429)
>>>> **************** <<<<
[3841724.027] wl_buffer()
[3841724.041] wl_callback(8433000)
[3841724.048]  -> wl_surface(new id wl_callback@124)
[3841724.054]  -> wl_surface(wl_buffer@53, 0, 0)
[3841724.061]  -> wl_surface()

Comment 2 Martin Stransky 2017-07-10 20:18:08 UTC
So looks like we need to call wl_surface_damage after wl_surface_attach.

Comment 3 Martin Stransky 2017-07-12 09:14:10 UTC
Fix is committed to commit 32899bf0d996dbe1008bd9abd79724a8217fb6b8 but it's seem incomplete - I still see the missing popups.

Comment 4 Martin Stransky 2017-07-13 10:42:35 UTC
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.