[Wayland] Fails to render popup window
Categories
(Core :: Widget: Gtk, enhancement)
Tracking
()
People
(Reporter: stransky, Assigned: stransky)
References
(Blocks 1 open bug)
Details
Attachments
(1 file)
When xdg_popup window is created, sometimes the underlying wl_surface is changed during map/show event.
We need to check surface ID and recreate the frame callback then.
Related part of Wayland/Firefox log:
[2821405.390] -> wl_compositor@4.create_surface(new id wl_surface@71)
[(null) 9928: Main Thread]: D/Widget nsWindow::NativeMoveResize [0x7f74c4347400] 26 52 270 370
[(null) 9928: Main Thread]: D/Widget NativeMoveResizeWaylandPopup result 26 52
[(null) 9928: Main Thread]: D/Widget nsWindow::Show [0x7f74c4347400] state 1
[(null) 9928: Main Thread]: D/Widget moz_container_map_wayland() [0x7f74af2c68d0]
[2821503.465] -> wl_surface@71.frame(new id wl_callback@65)
[(null) 9928: Main Thread]: D/Widget moz_container_map_wayland() [0x7f74af2c68d0]
[2821503.488] -> xdg_wm_base@24.create_positioner(new id xdg_positioner@82)
[2821503.495] -> xdg_positioner@82.set_size(200, 200)
[2821503.502] -> xdg_positioner@82.set_anchor_rect(0, 29, 270, 370)
[2821503.513] -> xdg_positioner@82.set_offset(0, 0)
[2821503.520] -> xdg_positioner@82.set_anchor(5)
[2821503.525] -> xdg_positioner@82.set_gravity(8)
[2821503.530] -> xdg_positioner@82.set_constraint_adjustment(63)
[2821503.535] -> xdg_wm_base@24.get_xdg_surface(new id xdg_surface@79, wl_surface@71)
[2821503.544] -> xdg_surface@79.get_popup(new id xdg_popup@70, xdg_surface@40, xdg_positioner@82)
[2821503.555] -> xdg_positioner@82.destroy()
[2821503.559] -> wl_surface@71.commit()
[(null) 9928: Main Thread]: D/Widget nsWindow::NativeResize [0x7f74c4347400] 270 370
[2821516.171] -> wl_shm@45.create_pool(new id wl_shm_pool@90, fd 113, 1598400)
[2821516.196] -> wl_shm_pool@90.create_buffer(new id wl_buffer@80, 0, 540, 740, 2160, 0)
[(null) 9928: Main Thread]: D/Widget moz_container_map_wayland() [0x7f74af2c68d0] ready_to_draw 0 frame_callback_handler 0x7f74c43ce290
[2821571.720] -> xdg_popup@70.destroy()
[2821571.734] -> xdg_surface@79.destroy()
[2821571.740] -> wl_surface@71.destroy()
[2821571.756] -> wl_compositor@4.create_surface(new id wl_surface@86)
[2821571.765] -> xdg_wm_base@24.create_positioner(new id xdg_positioner@93)
[2821571.772] -> xdg_positioner@93.set_size(270, 370)
[2821571.779] -> xdg_positioner@93.set_anchor_rect(0, 29, 270, 370)
[2821571.791] -> xdg_positioner@93.set_offset(0, 0)
[2821571.798] -> xdg_positioner@93.set_anchor(5)
[2821571.803] -> xdg_positioner@93.set_gravity(8)
[2821571.808] -> xdg_positioner@93.set_constraint_adjustment(63)
[2821571.814] -> xdg_wm_base@24.get_xdg_surface(new id xdg_surface@89, wl_surface@86)
[2821571.823] -> xdg_surface@89.get_popup(new id xdg_popup@94, xdg_surface@40, xdg_positioner@93)
[2821571.833] -> xdg_positioner@93.destroy()
[2821571.838] -> wl_surface@86.commit()
Assignee | ||
Comment 1•4 years ago
|
||
When xdg_popup window is created, sometimes the underlying wl_surface is changed during map/show event.
We need to check surface ID and recreate the frame callback then.
Assignee | ||
Updated•4 years ago
|
Pushed by cbrindusan@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/67be47d6ddbb
[Wayland] Request initial frame callback again if parent wl_surface changes, r=ashie
Comment 4•4 years ago
|
||
bugherder |
Comment 5•4 years ago
|
||
Martin, do you need this on beta or can it ride the trains to 68?
Assignee | ||
Comment 6•4 years ago
|
||
(In reply to Julien Cristau [:jcristau] from comment #5)
Martin, do you need this on beta or can it ride the trains to 68?
68 is fine, thanks.
Updated•4 years ago
|
Description
•