Skip to content

sync: TheSuperHackers upstream (5 commits, 06-04-2026)#154

Closed
fbraz3 wants to merge 6 commits into
mainfrom
thesuperhackers-sync-06-04-2026
Closed

sync: TheSuperHackers upstream (5 commits, 06-04-2026)#154
fbraz3 wants to merge 6 commits into
mainfrom
thesuperhackers-sync-06-04-2026

Conversation

@fbraz3
Copy link
Copy Markdown
Owner

@fbraz3 fbraz3 commented Jun 5, 2026

Description

Syncs 5 commits from TheSuperHackers/main (7c78a5e17) into the
thesuperhackers-sync-06-04-2026 branch. Last local sync ancestor
was 20f42549c.

This is a small, well-scoped sync. The bulk of the upstream
file-unification work (into Core/) was absorbed by previous syncs;
this sync is a clean refactor + a couple of bug fixes.

Changes Brought In

Conflict Resolution

2 real UU conflicts (both MetaEvent.cpp):
Resolved by taking upstream's onKeyEvent(msg, disp) dispatch.
The new methods are auto-merged into the file body; the conflict was
only the inline keyboard handling block.

4 broken auto-merge sites — hand-repaired:

  • Generals{,MD}/.../MetaEvent.h — git auto-merge unioned upstream's
    new KeyDownInfo struct on top of our old m_lastKeyDown /
    m_lastModState members. Replaced the member block with upstream's
    KeyDownInfo m_keyDownInfos[KEY_COUNT].
  • Generals{,MD}/.../MetaEvent.cpp constructors — still initialized
    the now-dead members. Dropped those initializers.

1 downstream API propagation:

  • Core/GameEngine/Include/Common/GameAudio.h — base class signatures
    changed: nextMusicTrack / prevMusicTrack now return AsciiString;
    getMusicTrackName removed from abstract base. Our OpenAL backend
    (Core/GameEngineDevice/.../OpenALAudioManager.{h,cpp}) was updated
    to match. The dead stub in GeneralsMD/.../Source/OpenALAudioManager.cpp
    updated for tree parity.

1 build fix required by upstream code:

  • Core/Libraries/Include/Lib/BaseType.h — added missing BitsAreSet
    macro that upstream's MetaEvent code depends on. Platform-neutral.

1 housekeeping:

  • AGENTS.md — cleared pre-existing merge markers (from commit
    996eedd4e, NOT from this sync). Kept the "Updated upstream" version
    which matches the current file structure.

No blanket strategies — each file was analyzed and resolved
individually.

Cross-Platform Integrity

Full audit performed:

  • SDL3 layer: untouched by upstream
  • DXVK layer: only a memory-leak fix in W3DModelDraw.cpp (platform-neutral)
  • OpenAL layer: updated to match new AudioManager signatures (compile-clean)
  • FFmpeg / Video layer: untouched
  • Miles Audio: refactored, but only internal state enum and mutex.h
    (cross-platform, uses std::atomic)
  • interlocked_adapter.h: VC6-compat shim gated on _MSC_VER < 1300,
    inert on Linux/macOS
  • INI parser: untouched (no macOS numeric-parsing risk in this sync)
  • All .github/ CI/CD infrastructure: intact, untouched
  • GeneralsX-specific patches and GeneralsX @bugfix annotations: preserved

The GeneralsX cross-platform stack (SDL3 + DXVK + OpenAL + FFmpeg)
is fully preserved.

Validation

Step Status
macos-vulkan configure Pass (141.5s)
z_generals (GeneralsXZH) build Pass (15.7 MB)
GeneralsX target build Pass (14.9 MB)
Runtime smoke — GeneralsXZH Pass (SDL3/OpenAL/Vulkan/INI init, main loop entered, exit 0)
Runtime smoke — GeneralsX Pass (same)
No merge markers in tree Pass (excluding build/ artifacts and third-party FetchContent)
Cross-platform audit Pass (no platform code leaked into shared headers)
linux64-deploy Docker build Deferred to CI (per user request — robust CI covers it)

Files / Subsystems Needing Extra Review

  • MetaEventTranslator (input/keyboard) — verify KeyDownInfo m_keyDownInfos[KEY_COUNT]
    is sized correctly for the system key count on all platforms
  • GameAudio.h base API change — any third-party audio backend added
    later must return AsciiString from music-track methods
  • Miles Audio refactor — new MilesAudioManagerDummy; reference-only
    on Linux/macOS but must compile
  • W3DModelDraw.cppanimHandle lifecycle refactor; verify
    long-session W3D animations
  • OpenAL stub in GeneralsMD/.../Source/OpenALAudioManager.cpp
    matches new signatures for tree parity

Testing Checklist

References

Full conflict resolution plan and risk analysis:
docs/WORKDIR/planning/PLAN-2026-06-04_THESUPERHACKERS_SYNC.md

Caball009 and others added 6 commits June 1, 2026 21:23
…nDestroy() when Reinforcement Pad is destroyed before Troop Crawler drop (TheSuperHackers#2747)
Upstream: TheSuperHackers/main @ 7c78a5e
Ancestor: 20f4254 (previous sync)
Divergence: 5 commits upstream / 1813 ours (small sync)

PRs brought in:
  - TheSuperHackers#2710 fix(memory): Fix various memory leaks (2)
  - TheSuperHackers#2747 bugfix(object): Avoid crash with dangling contain module (Object::onDestroy)
  - TheSuperHackers#2718 fix/refactor(milesaudiomanager): Prevent multithread crashing + simplify
  - TheSuperHackers#2577 fix(metaevent): Ignore order in which modifier keys are released
  - TheSuperHackers#2758 refactor(metaevent): Split MetaEventTranslator::translateGameMessage()

Conflict resolution (this commit):
  - Generals/GeneralsMD/.../MetaEvent.h: replaced m_lastKeyDown/m_lastModState
    members with upstream's KeyDownInfo m_keyDownInfos[KEY_COUNT] struct to
    match the refactored translator (auto-merge had unioned both).
  - Generals/GeneralsMD/.../MetaEvent.cpp: resolved UU by taking upstream's
    onKeyEvent() dispatch + dropped now-dead m_lastKeyDown/m_lastModState
    member initializers in the constructor.
  - Core/GameEngine/Include/Common/GameAudio.h: kept upstream's signature
    change (nextMusicTrack/prevMusicTrack now return AsciiString;
    getMusicTrackName removed from base). Updated our OpenAL backend
    (Core/GameEngineDevice/{Include,Source}/OpenALAudioDevice/) to match.
  - Core/Libraries/Include/Lib/BaseType.h: added missing BitsAreSet macro
    that upstream's MetaEvent code depends on.
  - AGENTS.md: cleared pre-existing merge markers (not from this sync;
    left from commit 996eedd).
  - GeneralsMD/.../Source/OpenALAudioManager.cpp stub: signature parity.

Preserved (no merge change):
  - GeneralsX cross-platform stack: SDL3, DXVK, OpenAL, FFmpeg
  - All .github/ CI/CD infrastructure intact
  - GeneralsX-specific patches and GeneralsX @BugFix annotations

Verified:
  - macos-vulkan configure + build (GeneralsX + GeneralsXZH)
  - Runtime smoke for both products (clean init, no crash)
  - No merge markers in tree (excluding build/ artifacts)
  - Cross-platform audit: no platform-specific code leaked into shared
    headers; SDL3/DXVK/OpenAL/FFmpeg layers untouched by upstream

Deferred to CI:
  - linux64-deploy configure + build (validated locally but heavy
    docker image build; CI covers)

See docs/WORKDIR/planning/PLAN-2026-06-04_THESUPERHACKERS_SYNC.md for
the full conflict resolution report and risk analysis.

Refs: TheSuperHackers#2710, TheSuperHackers#2747, TheSuperHackers#2718, TheSuperHackers#2577, TheSuperHackers#2758
@fbraz3 fbraz3 closed this Jun 5, 2026
@fbraz3 fbraz3 deleted the thesuperhackers-sync-06-04-2026 branch June 5, 2026 19:56
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.

3 participants