gnome-gitlab World/Phosh/phoc v0.48.0

latest releases: v0.49.0, v0.49_rc1
2 months ago

Summary of changes

  • Update to wlroots 0.19.0
  • Save output configurations and restore them in the
    single output case. Note: configuration in phoc.ini takes
    precedence.
  • Support adapative-sync
  • New protocol support:
    • shortcuts-inhibit
    • ext-image-capture-source-v1
    • ext-image-capture-copy-v1
  • Updated protocol support:
    • wp_presentation time version 2
  • Issues fixed:
  • Contributors:
    • Andrey Skvortsov
    • Guido Günther

Detailed changes

phoc (0.48.0) experimental; urgency=medium
.
  * testlib: Store format in GPtrArray.
    The current bitfield isn't large enough for large format values
    which doesn't matter in practice (as we're only interested on
    small valued) but it trips up clang.
    We use a GPtrArray instead of a GArray due to the easier searching.
  * tests/xwayland: Don't quit the main loop in between.
    Rather unmap after map in the callback. This gives a more
    expected flow.
  * tests/xwayland: Move window construction to idle callback.
    This separates the out the window handling to make things
    a bit easier to follow.
  * tests: Make it a bit simpler to create backtraces under asan
  * tests/xwayland: Skip under ASAN.
    Under ASAN we ever so often don't see any map event (sometimes
    also unmap goes missing) although we see other events. So skip
    the test until we figured out the cause.
.
phoc (0.48~rc1) experimental; urgency=medium
.
  [ Guido Günther ]
  * Use wlroots 0.19
  * ci: Don't use `remote` to access ci templates.
    This avoids the 429 error.
  * drag-icon: Don't forget to unlink map.
  * xdg-toplevel: Check if surface is initialzed.
    The whole position/resize logic needs a rework but this avoids the
    assert  with wlroots 0.19.x.
  * ci: Update image
  * build: Bump wayland dependency
  * output: Rename damage_whole_view.
    We damage the blings as part of damaging the whole view but the view's
    surfaces are damaged via phoc_output_view_for_each_surface.
  * output: Transform to damage ring buffer local coordinates.
    Damage added to the ring buffer now must be buffer local coordinates
    thus we transfrom the damage right before adding it to the buffer in
    phoc_output_damage_{region,box} so callers don't need to bother.
    This means we no longer need to transform this in get_frame_damage()
    when getting the frame damage.
  * render: Use output buffer local coordinates.
    Since damage is in that coordinate space and we clip to it we need to
    transfrom the other coordinates before feeding it to
    phoc_util_is_box_damaged as otherwise the we clip incorrectly.
  * bling: Use phoc_output_damage_box.
    This moves all additions to the damage ring to the output class as it
    should be.
  * subprojects/wlroots: Use GNOME mirror.
    Fewer external dependencies
  * idle-inhibit: Remove destroy listener sooner.
    If we wait until all refs are dropped in cleanup we can hit wlroots
    listener checks as they run just past destroy.
  * build: Use subdir_done(). Avoids one indent level
  * treewide: Format meson files.
    This will make it easier to keep them consistent in the future
    and now is good point in time as we have few outstanding MRs.
  * treewide: Update ci shared scripts and dotfiles to a7ec897
  * ci: Check meson format.
    Make sure we keep meson format happy
  * helpers: Move to tools/
    This makes it match what phosh does
  * build: Add gvdb as subproject.
    We'll use it to store the outputs states
  * utils: Add helper to convert output transform to string.
    We'll need that in more places soon
  * output: Rename output configuration variable.
    The name was pretty generic.
  * settings: Make output_config_{new,destroy} public.
    We want to use it from output-state too
  * output-states: Allow to keep track of output state changes.
    Persist output configuration states so it can be reused for
    automatic output configuration.
  * desktop: Save and load output configuration state changes.
    We trigger persisting output states on config changes and look
    for a matching output configuration when a new output needs to
    be configured.
    Helps: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/255
  * desktop: Allow to ignore saved outputs states
  * desktop: Only handle single output configurations.
    We'll allow for multiple outputs once this got tested more and
    we feel confident enough to also reconfigure existing outputs
    in the same output state change transaction.
  * output: Dump config on state changes
  * tools: Add tool to inspect saved outputs states
  * input: Allow for `NULL` input when setting focus.
    On shutdown we dispose the input before the backend to disconnect
    the signals so allow for a `NULL` input here to avoid a crash
    on shutdown.
    Closes: https://gitlab.gnome.org/World/Phosh/phoc/-/issues/405
  * build: Build 'data' earlier.
    This allows us to use the compiled schema files
  * tests: Depend on compiled schemas
  * ci: Don't compile schemas.
    The tests now have a proper dependency
  * output: Check for width and height when filling mode.
    Just width is not enough. It's fine to not pass in a
    refresh rate though.
  * output: Set layout position for 0,0 too
    (0,0) is a valid config value and when the user forces it (or
    we pick it up from the outputs-states we should use it rather
    than using automatic layout (which would usually yield the same
    result).
  * output: Separate output state and layout position
    phoc_output_fill_state handled both but we want to be able set them independently
    as e.g. an output state test shouldn't prompt any layout position changes.
  * output: Move lx,ly update to phoc_output_set_layout_pos.
    This ensures they stay in sync if we perform all updates that way.
  * output: Use PhocOutputConfig with head states too.
    This ensures we have a single place that sets pending output state.
  * output: Use phoc_output_set_layout_pos when applying head state.
    We already set (x,y) in `phoc_output_config_head_to_output_config`
    so we just need to apply it.
    This brings initial output setup and head config changes even more
    in line.
  * desktop: Don't rebuild output configs for state changes.
    Now that `phoc_output_config_head_to_output_config` builds an
    output config for filling in the pending state we can use that
    same config to persist the outputs states.
    This makes sure we don't have yet another place that needs to
    keep track of the output configuration. The only thing the
    desktop needs to care about is to get the identifier right.
  * settings: Parse adaptive-sync.
    This will be used to enable/disable VRR aka adaptive-sync
  * output: Allow to set adaptive sync.
    It can be set via config or wlr-randr
  * outputs-states: Save and restore adaptive-sync state
  * tools: Print adaptive sync state
  * gtk-shell: Use a single path for freeing resources.
  * xdg-toplevel: Check initialized in set_fullscreen to not hit a wlroots
    assertion
.
  [ Andrey Skvortsov ]
  * shortcuts-inhibit: Add support for the keyboard shortcuts inhibit protocol.
    This allows applications receive all keyboard input. It is often used
    by remote desktop and virtualisation software. It maybe used, when
    some applications want to temporary override global system shortcuts.

Required versions of related projects

Required wlroots patches (not yet in a release)

Required wlroots patches (not yet merged upstream)

Recommended wlroots patches

(none) - all contained in 0.18.2 and later

Don't miss a new phoc release

NewReleases is sending notifications on new releases.