Closed Bug 1535567 Opened 4 years ago Closed 4 years ago

[Wayland] Fails to render popup window

Categories

(Core :: Widget: Gtk, enhancement)

enhancement
Not set
normal

Tracking

()

RESOLVED FIXED
mozilla68
Tracking Status
firefox67 --- wontfix
firefox68 --- fixed

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()

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.

Depends on: 1534963

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

Keywords: checkin-needed
Status: NEW → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla68

Martin, do you need this on beta or can it ride the trains to 68?

Flags: needinfo?(stransky)

(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.

Flags: needinfo?(stransky)
You need to log in before you can comment on or make changes to this bug.