fix: stabilize dock allocation after display wake - #345
Open
mihaly044 wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Problem
On GNOME 50 under Wayland, blanking and waking the display could leave the
animated dock in a persistent relayout loop. Hovering the dock then generated
large bursts of messages such as:
This manifested as unstable magnification and increased GNOME Shell load.
There were three contributing paths:
the same frame in which they were attached, before Clutter allocated them.
layout()first assigned the dock the full monitor dimensions and thenassigned its final dock dimensions on every animation frame. This
continuously invalidated actor allocation even when the final geometry had
not changed.
temporarily unallocated during display topology changes.
Changes
The renderer setup now queues relayout and waits one frame after adding new
actors. Dock geometry is calculated in local variables and committed once,
with unchanged properties left untouched. Blur clip updates now require valid
allocations, finite coordinates, and positive dimensions.
The new geometry remains monitor-relative and preserves the previous placement
for top, bottom, left, and right docks.
Validation
node --check animator.jsnode --check dock.jsnode --check integrations.jsgit diff --checkglib-compile-schemas --strict --dry-run schemasposition, monitor origin/resolution, and dock thickness
GNOME Shell 50.3, Wayland; the repeated allocation-warning storm did not
return and the Shell process remained stable
Scope
This PR is limited to generic allocation and display-wake stability. It does
not include downstream theme-specific magnification behavior.