Skip to content

fix(wine): release drop target after drop or leave - #3

Draft
silaswester wants to merge 2 commits into
mainfrom
task-t_47cee33-116
Draft

silaswester wants to merge 2 commits into
mainfrom
task-t_47cee33-116

Conversation

@silaswester

Copy link
Copy Markdown
Owner

Summary

  • independently backports Wine upstream commit 8ca473d0c6aa3b2d2711de4b6d24fe2c85fa6c48 to release the retained IDropTarget at the end of drag_drop_drop and drag_drop_leave.
  • updates the frozen patch-series manifest, required-tail policy, and CHANGELOG.
  • adds a deterministic source-context applicability test that proves the backport applies to the pinned Wine 11.13 source archive without offset, fuzz, or context drift.

Issue

  • Targets upstream issue shibco/ableton-linux#116 (drag & drop stops working at random intervals).
  • This PR is a third, independent implementation in silaswester/ableton-linux. It does not update, supersede, or rebase the two earlier open PRs (#1 from task-t_bf605a9-116 and fix/user32-drop-target-lifetime) so all three implementations remain available for side-by-side comparison.
  • The upstream repository and issue stay read-only.

Source-equivalence / provenance

  • Source patch is byte-for-byte identical to upstream commit 8ca473d0c6aa3b2d2711de4b6d24fe2c85fa6c48:
    • Author: Zhou Zhang <zhangzhou@uniontech.com> (mail header preserved)
    • Author date: Fri, 17 Jul 2026 15:22:15 +0800 (mail header preserved)
    • Subject: [PATCH] user32: Release drop target at the end of drag_drop_drop and drag_drop_leave. (preserved verbatim, including the wrapped continuation)
  • Local dlls/user32/clipboard.c base SHA256 (extracted from vendored vendor/wine-base-5c23dd1c.tar.zst) equals wine-mirror/wine's file at the upstream parent commit c5cb1e78.
  • Local dlls/user32/clipboard.c SHA256 after applying patches/0099-user32-Release-drop-target-at-the-end-of-drag_drop_d.patch equals wine-mirror/wine's file at upstream 8ca473d0.

Acceptance matrix

Criterion Result Evidence
Patch preserves upstream author / date / subject PASS scripts/test-user32-drop-target-lifetime.sh (preserves upstream mail authorship and subject)
Patch covers drag_drop_leave retained-target cleanup PASS scripts/test-user32-drop-target-lifetime.sh (covers drag_drop_leave retained-target cleanup)
Patch covers delayed drag_drop_drop release PASS scripts/test-user32-drop-target-lifetime.sh (covers delayed drop-path release after drop processing)
Patch applies cleanly to pinned Wine 11.13 source context PASS scripts/test-user32-drop-target-lifetime.sh (applies cleanly to pinned Wine user32 source context)
Required Wine series tail is 0099-... patch PASS ./scripts/build-audit.sh --check-series-policy patches/SERIES.sha256 (OK: required Wine and PipeASIO series tails are present.)
Frozen patches/SERIES.sha256 re-verifies PASS sha256sum -c patches/SERIES.sha256 (all 106 entries OK)
Pointer-safety invariants preserved PASS make check (pointer safety checks: PASS)
Vendor archive integrity PASS make verify (OK for every vendored archive)
Required-tail policy still passes after backport PASS scripts/test-release-policy.sh (patch series cannot lose either required terminal member)

Pre-existing failure isolated to unchanged baseline: make test reaches scripts/test-desktop-integration.sh, which fails with installer kit is missing its PipeWire compatibility check both on this branch and on clean main. The failure is unrelated to this change.

Documentation reconciliation

  • BUILDING.md documents that make test now exercises the patch 0099 applicability invariant and that the deterministic source checks preserve the link to upstream commit 8ca473d0c6aa3b2d2711de4b6d24fe2c85fa6c48.
  • CHANGELOG.md records the new backport, the upstream commit linkage, the runtime reproduction caveat (no Live runtime reproduction captured), and the relation to issue 116.
  • patches/BASE.txt reconciles the series count, the 0099 provenance entry, and notes that runtime behavior is not proved by the deterministic checks.

Scope evidence

  • git diff --name-status origin/main...HEAD: 0 deletions, 8 scoped files
  • Files: BUILDING.md, CHANGELOG.md, Makefile, patches/0099-user32-Release-drop-target-at-the-end-of-drag_drop_d.patch (added), patches/BASE.txt, patches/SERIES.sha256, scripts/build-audit.sh, scripts/test-user32-drop-target-lifetime.sh (added).
  • Branch base: exact origin/main at 4004f205b67546d559e342f4ab62fd78b03fed5b. Local head SHA: 0184ab996d3b856d300f83c39d6be458c78d2eed.
  • No deletion, no rename, no copy from elsewhere, no edit outside the eight listed files.

Known defects / limits

  • Deterministic source tests prove exact upstream source equivalence and clean applicability to the pinned Wine 11.13 source archive. They do not prove that drag-and-drop behavior changes in a running Live. A controlled Live A/B on at least one affected host is the appropriate next gate before treating issue 116 as resolved.
  • make test desktop-integration failure predates this branch and is unrelated to the patch 0099 change.

Boundaries

  • target repo: silaswester/ableton-linux only
  • base branch: main
  • upstream repository: read-only; no issue, label, comment, or branch touched
  • branch task-t_47cee33-116 is left for Matt's comparison review; do not merge automatically
  • leaves draft open in this repo only; the previously-published open PRs #1 and #2 are not modified

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants