mirror of
https://github.com/ZoneMinder/zoneminder.git
synced 2026-10-06 09:22:04 -04:00
select_zms() has a branch that resumes an existing zms with CMD_PLAY rather than rebuilding the stream, but three things stopped it ever working. Every one of them showed up only when the page was driven for real. stop() ends by clearing activePlayer, which is the only thing that branch tests, so after any stop it was unreachable and start() fell through to "new src, new connkey" - a second zms, the first left running and no longer addressable. That is the montage page's accumulating processes: hide the tab, the handler stops each stream, and returning replaces rather than resumes. The same happens when a monitor is scrolled out of view and back. stop() now remembers what it shut down, and select_zms() resumes on that as well as on activePlayer, provided we still hold the connkey to address it. srcAuthCurrent required a non-empty zmAuth.hash, which is '' whenever auth is off or the relay carries no hash. There is nothing that can go stale in that case, so the src is as current as it will ever be; requiring a hash sent every such install down the rebuild path for no reason. streamCommand() drops anything sent while !started, and started is not set until the end of select_zms(), so the resume issued its CMD_PLAY into nothing and the stream stayed stopped. Resuming after a pause worked only because pause() leaves started set. It is now set before the command goes out. Finally, the rebuild path clears the "Loading..." info block from img_onload, which cannot fire on a resume because src never changes. Without clearing it, a stream that had in fact resumed sat behind that block and its still image and looked frozen - the fault that made this look unfixable at first. restart() is excluded from all of it: it is the error path, whatever failed may be that very zms, and a broken img is not repaired by CMD_PLAY. Verified on a live montage page with two monitors: across two hide/show cycles the same two zms processes are kept - no orphans, no respawn - and both pictures are live afterwards, with the zms status reporting stopped=0 and ~15 fps. refs #4706 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Modern ZoneMinder Skin
This web frontend to ZoneMinder is a complete rewrite of the classic frontend, based on CakePHP.