Skip to content

[6.42] [eve7] Clear a scene's output after streaming it to a new connection - #24033

Open
root-project-bot wants to merge 1 commit into
root-project:v6-42-00-patchesfrom
root-project-bot:BP_6.42_pull_24017
Open

root-project-bot wants to merge 1 commit into
root-project:v6-42-00-patchesfrom
root-project-bot:BP_6.42_pull_24017

Conversation

@root-project-bot

Copy link
Copy Markdown

Backport of #24017, requested by @linev. For your information @osschar

REveManager::WindowConnect() streams the world and the mandatory scenes
to the new connection with StreamElements() and sends the output to that
connection only, but leaves it in the scene. The next change cycle then
runs SendChangesToSubscribers(), which sends whatever output a scene holds
to every subscriber: every client received the full StreamElements of the
world and of the mandatory scenes once more, re-ran onEveManagerInit(),
rebuilt the summary tree and closed the editor. The same happened in the
MIR path that subscribes a viewer to a scene later, where SendSceneChanges()
follows the direct send immediately, so the new client got the full stream
twice.

Added REveScene::ClearOutput(), which drops fOutputJson, fOutputBinary and
fTotalBinarySize, and call it after each direct send in both paths.
SendChangesToSubscribers() uses it for the clearing it already did.

Verified in the browser on track_set_collection.C: the editor of the track
set stays open across the first MIR after a page load; before the change
the first MIR closed it.

Assisted-by: Claude:Fable 5.1
(cherry picked from commit 76948cf)
@osschar

osschar commented Nov 6, 2026

Copy link
Copy Markdown
Contributor

Thank you Sergey! I was already preparing the follow up PR for 6.42, but this is clearly better :)

This branch has not been deployed

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants