Summary of changes
- Detect fling gesture on layer surfaces
- Update to wlroots 0.17.3
- Apply drm panel orientation. This can be disabled via
phoc.ini. This might require adjustments to the mount matrix to make sensor
orientation match screen orientation.
- Fix assertions and crashes related to output removal
- Allow to tweak layer surface stacking
- Issues fixed:
- Contributors:
- Guido Günther
- Guido Günther
Detailed changes
phoc (0.40.0) experimental; urgency=medium
.
* keyboard: Modernize indent.
PhocKeyboard is one of the earlier GObjects. Let it catch up with
current indent.
* keyboard: Use C style comments
* keyboard: Chain up to parent's constructed first.
We want to initialize the parent first. The other children of
PhocInputDevice to that correctly already.
* keyboard: Move signals above class
* subprojects: Update wlroots to 0.17.3
* tracing: Drop unused variables
* gesture: Fix indent
* cursor: Name drag gesture accordingly.
This makes it distinguishable from other gestures.
* cursor: Drop cursor_gestures_handle_event.
We can fold it into handle_gestures_for_event_at
* layer-shell-effects: Reduce time for fold/unfold animation.
Feels more snappy without being too hectic.
* gesture: Allow to retrieve last event sequence
* layer-shell-effects: Split out is_handle check.
Will be useful in a follow up commit
* layer-shell-effects: Allow to fling fold/unfold a draggable surface.
When the velocity is high enough the surface fold/unfold is animated.
We don't take the velocity into account for the animation.
* cursor: Detect swipe gestures.
Apply them to draggable layer surfaces if present. This allows to
fling them away with a high velocity swipe gesture.
Closes: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/284
Closes: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/792
* output: Handle NULL output gracefully.
It's a bit simpler than adding `if (!output)` at the call sites
* seat: Handle NULL output gracefully.
We can't arrange layers on gone outputs.
Closes: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/257
* desktop: Simplify phoc_desktop_surface_at.
The function becomes quick to parse if we remove the assignments
out of the if() clauses and get the output coordinates upfront
as they apply to both layer surface blocks.
* desktop: Add wlr to desktop_surface_at.
Makes it consistent with phoc_view_get_wlr_surface_at
* output: Get getter for wlr_output.
We catch lots of errors via type asserts so add a getter with
that.
* output: Clear wlr_output->data pointer.
This points to self which is about to be finalized, clear it out so
other parts don't access the gone output.
* desktop: Don't forget to remove the gone output from the layout.
Closes: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/155
* tests: Use MALLOC_PERTURB_
* layer-surface: Add layer getter
* layer-shell-effects: Drop hash table for alpha layer surfaces.
We don't need to look up by layer surface so no need to maintain the
hash.
* output: Make phoc_output_for_each_surface private
* output: Clarify phoc_output_get_layer_surfaces_for_layer
* output: Use a GQueue for the layer surfaces.
This allows us to go forward and backwards easily.
* desktop: Use phoc_output_get_layer_surfaces_for_layer.
This makes sure we confine the layer surface iteration to
PhocOutput.
* output: Unify layer surface iteration logic.
Use phoc_output_get_layer_surfaces_for_layer to iterate the
surfaces in phoc_output_layer_for_each_surface. This unifies
layer surface iteration in one place.
* output: Move queue ownership to output.
This will allow us to cache it
* output: Cache layer surface ordering.
Instead of recalculating on each access cache the ordering
and make bits that might change the ordering (such as committing
a layer surface) invalidate the cache.
This also works towards removing more double accounting in this area.
* layer-shell-effects: Allow to tweak stacking.
The stacked-layer-surface protocol allows to stack a layer surface
directly above or below another layer surface.
* desktop: Allow to get layer surface stacks
* output: Process layer surface stackings
* ci: Fix drm backend build on alpine.
It needs libdisplay-panel-info
* doc: Document help and disable-animations flag
* settings: Split out boolean option parsing
* output: Simplify update_output_manager_config
wlr_output_configuration_head_v1_create already sets the values from
the passed in output.
* output: Apply drm panel orientation.
If `drm-panel-orientation` is set to `true` in phoc.ini apply the panel
orientation transform by default.
Closes: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/192
* utils: Ignore displays that encode aspect ratio rather than size.
This is based on sway's 2f84d6e349d12f3293c44268bc5c8551340e5787 which
in turn got inspired by mutter.
* output: Allow to configure physical width and height.
This can be useful in case edid is off or if we're on a nested
display (like Wayland or X11)
* output: Print output info at the very end.
This allows us to see (possibly overridden) physical size.
Required versions of related projects
Required wlroots patches
- Revert "layer-shell: error on 0 dimension without anchors" (needed by phosh to workaround https://gitlab.gnome.org/World/Phosh/phosh/-/issues/422). For current patches see herewlroots
Recommended wlroots patches
(none) - all contained in 0.17.1 and later