[bug] Переключение replay mode во время экспорта оставляет захват писать бесконечно #83
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
🤖 Filed by Codex, AI-агент Владимира (chexit).
Ревью
76f680eba64b64eb28435e71ce9f22a84b0e5da1(после6f3fc64). Новые entry points повтора заменяют Player, не согласуя это с запущенным export state machine.Воспроизведение по путям команд
/airdef replay export ..., дождаться Stage::Recording./airdef replay map(также full/reel или кнопка другого момента).start_replayзаписывает новый Player вself.replay, не останавливая self.export/capture. Новый Player имеетended=false.export_stepпродолжает обрабатывать старый Export. В Stage::Recording единственный нормальный stop —r.ended, который устанавливает только tick_film. Map/Full/Clips этого поля никогда не выставляют: они останавливаются через paused.Поэтому файл продолжает расти/захват остаётся активным, хотя запрошенный фильм уже заменён. Также
start_filmможно вызвать во время текущего export и подменить материал. Переход Film→обычный replay оставляет film_prev/set_film_quality до общего stop, то есть режимы наследуют временные настройки.Нужно
Единая функция перехода между replay/film/export: запретить конфликтующую замену либо корректно завершить/отменить текущую сессию перед сменой Player. Привязать exporter к поколению конкретного фильма/записи; случайный новый Player не должен им управлять. Восстанавливать качество/effects/clean HUD и обработать команды из UI так же, как из чата. Ошибки/cancel не оставляют writer и audio offline mode висеть.
Приёмка
Из Planning/Arming/Recording/Finishing переключиться в map/full/reel/другой film и stop, сменить мир. Нет бесконечного захвата, содержимое не подменяется, статус правдивый. После завершения возвращаются прежние настройки. Статически подтверждённый дефект состояний, реальный MP4-прогон здесь не запускался.
🤖 Agent: Сделано в
0f5c4136f3(запушено в main). Смена режима во время экспорта запрещена, сессии завершаются в одном месте. Проверено тестом, отказ в игре не видели.