-
Notifications
You must be signed in to change notification settings - Fork 144
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update for wlroots 0.17 #626
Conversation
Great. Thank you. |
I think the current plan is to keep developing labwc based on wlroots 0.16.x for a while but there were thoughts about having an additional branch which contains all the labwc changes but instead of 0.16.x follows wlroots master. If you intend to keep doing this it would be great if you could use single commits to track upstream refactorings / API changes (including the wlroots commit hash that requires changes in the labwc commit message). I am not sure what the best way would be, if it would be a personal branch or PR I would just keep rebasing the wlroots 0.17.x "chase" commits on top of labwc master but changing history for a public branch will cause some annoyances for users. Merging on the other side kind of pollutes the history. Opinions? Edit: |
This is of interest, to me. I do like to follow the latest from wlroots git. |
61a1bd6
to
f513986
Compare
f513986
to
94414f5
Compare
This comment was marked as outdated.
This comment was marked as outdated.
94414f5
to
2b3c191
Compare
I've split this PR into multiple single commits (and addressed the output_layout feedback above). Edit: |
Separate commits is better in my view. I vote for force-pushing on John’s branch so that we’ve got it all in one place, but let’s check with John first before hacking on his work 😄 |
Force-pushing this branch is fine |
523b2ee
to
7b30106
Compare
Rebased on latest master (e.g. 0.6.1) and restored resizing for nested instances. The fix needs to be debugged / redefined:
The X11 backend issue may point to an underlying issue within labwc itself, with the way we reconfigure xwayland windows. |
31218d0
to
d9edd3d
Compare
d9edd3d
to
2c055bc
Compare
Regarding the Debian CI build error, I assume libxcb-ewmh-dev is missing from the apt install command in |
2c055bc
to
e2d28b8
Compare
Thanks for the pointer, I will try adding libxcb-ewmh-dev. |
e2d28b8
to
2e53494
Compare
6929177
to
dcdd8b2
Compare
Looks like a (new?) dependency is missing on FreeBSD:
|
Strange. It is part of the CI build in master for Debian Testing (and Void apparently, judging from 52488e1) but not for any of the other systems. I'd say lets just add it to the CI for FreeBSD in master and fix it here via the next rebase. Edit: Edit 2: |
Chases: 711a1a3ed42150fdbc716e80719d482006075f69 xdg-shell: convert to try_from Chases: f9bd416d4156942ce3951a6c5cf9f81a3cf4a3dd layer-shell-v1: convert to try_from Chases: fbf5982e3838ee28b5345e98832f6956c402b225 xwayland/xwm: introduce wlr_xwayland_surface_try_from_wlr_surface()
Chases: 7b32c25a4fbdcde4197a06c8e0ff638c54753bd7 wlr_scene: Rename wlr_scene_surface_from_buffer
Chases: 0bb574239d3b164596677bf4cec371ff0671dc4f compositor: pass version in wlr_compositor_create
6848cc4
to
258b6eb
Compare
I also ran everything through git log 0.6.6.. | sed -n '/^commit / s/^commit // p' | tac | while read commit; do
git checkout $commit && (cd subprojects/wlroots; git checkout $(sed -n '/^revision/ s/^.*= // p' < ../wlroots.wrap)) && nice meson compile -C build_017 || (echo "Failed: $commit" >> failed.log);
done; and all the commits now compile fine. There must be some better way to testcompile every commit + changing the wlroots one but this was faster than looking up how to do it properly. I also have a local branch with the state of this branch before my changes, just in case (note to future self: |
This is a new dependency of wlroots.
Need to handle new unified mapping, where mapping is attached to the wlr_surface objects instead of their parents. Also, most of them require a new associate event for xsurface objects, their surface member will be NULL before this event is received. Refactored by jlindgren: - add struct mappable - unify map/unmap logic
Chases 70c1a5724814d2f786f7d3a0e55a05f11af14029 gamma-control-v1: introduce set_gamma event
Chases: 18bafbfc57039e16d1dabd78b882b3d6477f76b5 xcursor-manager: drop wlr_xcursor_manager_set_cursor_image()
Chases: 214df8eda07d18b032abfcf525c8344e077c0c7e scene_output: optionally record and report timings
Chases: 657ca2205ff4d5f70cf294d9b5720acf2eaf76b4 wlr_gamma_control: add missing forward declarations
Chases: bdc34401ba8e4a59b3464c17fa5acf43ca417e57 xdg-decoration: store an xdg_toplevel instead of xdg_surface
Chases: 756ecf8ee9f1e75bc7b8297dc84f97c7d699174b backend/wayland: use request_state when toplevel is resized Chases: 3ef68a484243555b020200c6f95246d994932c3f backend/x11: use request_state when window is resized Ref: https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/2693 We now delay requested resolution changes by the backend until the next frame event which causes us to render the new content on the already enlarged buffer. Before this change, an empty (black) buffer would have been shown instead before the next frame event caused a new render of the actual contents. Keep commiting the new state and then scheduling a frame event would not help as due to the commit call it would still show an empty buffer in the meantime. Just modifying wlr_output->pending wouldn't work either because wlr_scene_output_commit() *completely* ignores it (and it will be removed in future wlroots commits). For this reason we move to wlr_scene_output_build_state() directly because it allows us to supply the current wlr_output->pending state and thus apply any resolution change in lockstep with new rendering. Result: No more flickering in the wayland backend and resizing is again smooth as butter. This prevents constant flicker while resizing when running nested via the wayland backend. For the X11 backend (can be tested via `WLR_BACKENDS=x11 labwc`), it is still rather janky but at least doesn't cause endless self- resizing anymore.
Chases: f5917f0247600b65edec1735234d00de57d577a8 scene_output_layout: make output adding explicit
Chases: a289f812d62059d5aac92cbd374dcb7b03bb08a6 drop KDE idle protocol support
Chases: 5fb0007e0249388792f3772c30bfabf8d551dec0 output_event_commit: Remove committed and buffer
258b6eb
to
bcd0e4b
Compare
Thanks both. Everything looks good to me. Aside from the nested resize (which I haven't tested) I've been running with all these changes for a little while now and I'm pretty confident there aren't any serious regressions, so I vote to go ahead with the merge. 👍 |
Well, thanks to you as well, you were the one starting this whole PR in the first place :) Although I haven't really tested anything other than short nested runs I am fine with merging this as well. I expect some stuff to break, for example I think there is an issue with gamma not working anymore due to a wlroots API change and there might be more like this. We might also want to look through the wlroots list with breaking changes for 0.17 to verify that we didn't miss anything hard to detect like changed event But as we are at the start of a dev cycle this seems pretty minor to me, we should wait a bit with a release though until those things are worked out. If we go for the merge we should likely also create a |
Thank you both 😄 |
@Narrat - note: now on |
Great! Adjusted the deps |
This is a set of changes required to build with wlroots
master
/ 0.17.0-dev (labwcmaster
currently uses wlroots 0.16.x).Perhaps it will be useful to other wanting to use wlroots-git. I plan to update/rebase it as further breaking changes are made on the wlroots side.