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).
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()
So looks like we need to call wl_surface_damage after wl_surface_attach.
Fix is committed to commit 32899bf0d996dbe1008bd9abd79724a8217fb6b8 but it's seem incomplete - I still see the missing popups.
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.
Shold be fixed by https://github.com/stransky/gecko-dev/commit/e9b168371cc640b28890e8b348173db4d8b8650c