Bug 1411735 - Firefox/Wayland - wl_surface_frame() callback is not fired for wl_surface owned by GdkWindow
Summary: Firefox/Wayland - wl_surface_frame() callback is not fired for wl_surface own...
Alias: None
Product: Fedora
Classification: Fedora
Component: wayland
Version: 25
Hardware: Unspecified
OS: Unspecified
Target Milestone: ---
Assignee: Adam Jackson
QA Contact: Fedora Extras Quality Assurance
Depends On:
TreeView+ depends on / blocked
Reported: 2017-01-10 12:04 UTC by Martin Stransky
Modified: 2017-01-31 15:13 UTC (History)
3 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Last Closed: 2017-01-31 15:13:55 UTC
Type: Bug

Attachments (Terms of Use)
testcase (8.74 KB, text/x-csrc)
2017-01-10 12:04 UTC, Martin Stransky
no flags Details
main wl_surface testcase (1.23 KB, text/x-csrc)
2017-01-17 15:37 UTC, Martin Stransky
no flags Details

Description Martin Stransky 2017-01-10 12:04:16 UTC
Created attachment 1239064 [details]

Description of problem:

See the attached testcase, redraw() func. When wl_surface_frame() is obtained from wl_subsurface, it's not fired. Both parent and subsurface are shown and visible. 

That hits Firefox which needs to draw to wl_subsurface off main thread and needs to use the frame callback for that. Jonas suggested it's a compositor bug, not sure what is a correct component for that.

Comment 1 Martin Stransky 2017-01-17 15:37:50 UTC
Created attachment 1241821 [details]
main wl_surface testcase

The bug is reproducible even without wl_subsurface. If I attach frame callback to wl_surface owned by GdkWindow I get the frame events only when Gdk redraws the window (window resize for instance). Otherwise I get nothing.

Comment 2 Olivier Fourdan 2017-01-18 10:21:23 UTC
Seems it works for me in both gnome-shell/mutter and weston, using attachment 1241821 [details] I get the initial redraw, then more redoaws when actuall redrawn (ie resizing, changing focus, etc.

Comment 3 Olivier Fourdan 2017-01-18 10:39:40 UTC
For reference: https://wayland.freedesktop.org/docs/html/apa.html#protocol-spec-wl_surface

"The frame request will take effect on the next wl_surface.commit. The notification will only be posted for one frame unless requested again. For a wl_surface, the notifications are posted in the order the frame requests were committed."

So in this case, we do get the frame callback when gdk commits the surface.

Comment 4 Martin Stransky 2017-01-31 15:13:55 UTC
Thanks, closing as notabug.

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